Both nbd_thread_recv() and nbd_thread_send() are might_sleep() and called with irqs enabled(), irqsave/irqrestore make no sense and imo look confusing.
Signed-off-by: Oleg Nesterov <[email protected]> --- drivers/block/nbd.c | 22 ++++++++++------------ 1 files changed, 10 insertions(+), 12 deletions(-) diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index 0ffd73c..fd79405 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -406,23 +406,22 @@ static int nbd_thread_recv(struct nbd_device *nbd) { struct request *req; int ret; - unsigned long flags; BUG_ON(nbd->magic != NBD_MAGIC); sk_set_memalloc(nbd->sock->sk); - spin_lock_irqsave(&nbd->tasks_lock, flags); + spin_lock_irq(&nbd->tasks_lock); nbd->task_recv = current; - spin_unlock_irqrestore(&nbd->tasks_lock, flags); + spin_unlock_irq(&nbd->tasks_lock); ret = device_create_file(disk_to_dev(nbd->disk), &pid_attr); if (ret) { dev_err(disk_to_dev(nbd->disk), "device_create_file failed!\n"); - spin_lock_irqsave(&nbd->tasks_lock, flags); + spin_lock_irq(&nbd->tasks_lock); nbd->task_recv = NULL; - spin_unlock_irqrestore(&nbd->tasks_lock, flags); + spin_unlock_irq(&nbd->tasks_lock); return ret; } @@ -439,9 +438,9 @@ static int nbd_thread_recv(struct nbd_device *nbd) device_remove_file(disk_to_dev(nbd->disk), &pid_attr); - spin_lock_irqsave(&nbd->tasks_lock, flags); + spin_lock_irq(&nbd->tasks_lock); nbd->task_recv = NULL; - spin_unlock_irqrestore(&nbd->tasks_lock, flags); + spin_unlock_irq(&nbd->tasks_lock); if (signal_pending(current)) { dev_warn(nbd_to_dev(nbd), "pid %d, %s, got signal", @@ -543,11 +542,10 @@ static int nbd_thread_send(void *data) { struct nbd_device *nbd = data; struct request *req; - unsigned long flags; - spin_lock_irqsave(&nbd->tasks_lock, flags); + spin_lock_irq(&nbd->tasks_lock); nbd->task_send = current; - spin_unlock_irqrestore(&nbd->tasks_lock, flags); + spin_unlock_irq(&nbd->tasks_lock); set_user_nice(current, MIN_NICE); while (!kthread_should_stop() || !list_empty(&nbd->waiting_queue)) { @@ -581,9 +579,9 @@ static int nbd_thread_send(void *data) nbd_handle_req(nbd, req); } - spin_lock_irqsave(&nbd->tasks_lock, flags); + spin_lock_irq(&nbd->tasks_lock); nbd->task_send = NULL; - spin_unlock_irqrestore(&nbd->tasks_lock, flags); + spin_unlock_irq(&nbd->tasks_lock); return 0; } -- 1.5.5.1 ------------------------------------------------------------------------------ _______________________________________________ Nbd-general mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/nbd-general
