diff options
author | Bart Van Assche <bart.vanassche@sandisk.com> | 2017-05-23 16:48:24 -0700 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2017-07-06 22:57:59 -0700 |
commit | f2b72d6a8eed0eb02e6346886514a27df1efe827 (patch) | |
tree | 34f1e6ac3aed537b761564a52723b6a2a2af5560 /drivers/target | |
parent | 9f2f342892e15f8600939ec8d06caf963ccff880 (diff) |
target: Fix transport_init_se_cmd()
Avoid that aborting a command before it has been submitted onto
a workqueue triggers the following warning:
INFO: trying to register non-static key.
the code is fine but needs lockdep annotation.
turning off the locking correctness validator.
CPU: 3 PID: 46 Comm: kworker/u8:1 Not tainted 4.12.0-rc2-dbg+ #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.0.0-prebuilt.qemu-project.org 04/01/2014
Workqueue: tmr-iblock target_tmr_work [target_core_mod]
Call Trace:
dump_stack+0x86/0xcf
register_lock_class+0xe8/0x570
__lock_acquire+0xa1/0x11d0
lock_acquire+0x59/0x80
flush_work+0x42/0x2b0
__cancel_work_timer+0x10c/0x180
cancel_work_sync+0xb/0x10
core_tmr_lun_reset+0x352/0x740 [target_core_mod]
target_tmr_work+0xd6/0x130 [target_core_mod]
process_one_work+0x1ca/0x3f0
worker_thread+0x49/0x3b0
kthread+0x109/0x140
ret_from_fork+0x31/0x40
Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.com>
Cc: David Disseldorp <ddiss@suse.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target')
-rw-r--r-- | drivers/target/target_core_transport.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index e045803921f8..d601616b9f12 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c @@ -1239,6 +1239,7 @@ void transport_init_se_cmd( init_completion(&cmd->t_transport_stop_comp); init_completion(&cmd->cmd_wait_comp); spin_lock_init(&cmd->t_state_lock); + INIT_WORK(&cmd->work, NULL); kref_init(&cmd->cmd_kref); cmd->se_tfo = tfo; |