X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=net%2Frfkill%2Fcore.c;h=14cc8fe8584bd1ed595a1f6918ebf9dd10364ac8;hb=fd83ff901d69f6ecc2381c3dda412cca14b984bb;hp=08630896b6c887645df9e75c97a1fba90935c3e6;hpb=291c0d3a98afb7b863485215c241a851be9e3435;p=platform%2Fkernel%2Flinux-starfive.git diff --git a/net/rfkill/core.c b/net/rfkill/core.c index 0863089..14cc8fe 100644 --- a/net/rfkill/core.c +++ b/net/rfkill/core.c @@ -1180,7 +1180,6 @@ static int rfkill_fop_open(struct inode *inode, struct file *file) init_waitqueue_head(&data->read_wait); mutex_lock(&rfkill_global_mutex); - mutex_lock(&data->mtx); /* * start getting events from elsewhere but hold mtx to get * startup events added first @@ -1192,10 +1191,11 @@ static int rfkill_fop_open(struct inode *inode, struct file *file) goto free; rfkill_sync(rfkill); rfkill_fill_event(&ev->ev, rfkill, RFKILL_OP_ADD); + mutex_lock(&data->mtx); list_add_tail(&ev->list, &data->events); + mutex_unlock(&data->mtx); } list_add(&data->list, &rfkill_fds); - mutex_unlock(&data->mtx); mutex_unlock(&rfkill_global_mutex); file->private_data = data; @@ -1203,7 +1203,6 @@ static int rfkill_fop_open(struct inode *inode, struct file *file) return stream_open(inode, file); free: - mutex_unlock(&data->mtx); mutex_unlock(&rfkill_global_mutex); mutex_destroy(&data->mtx); list_for_each_entry_safe(ev, tmp, &data->events, list)