Hi Thinh, On Wed, Jul 06, 2022 at 04:34:49PM -0700, Thinh Nguyen wrote: > If the tmr_notify is not implemented, simply execute a generic command > completion to notify the command abort. Why? What are you trying to fix? > > Signed-off-by: Thinh Nguyen <Thinh.Nguyen@xxxxxxxxxxxx> > --- > drivers/target/target_core_tmr.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/target/target_core_tmr.c b/drivers/target/target_core_tmr.c > index 7a7e24069ba7..2af80d0998bf 100644 > --- a/drivers/target/target_core_tmr.c > +++ b/drivers/target/target_core_tmr.c > @@ -14,6 +14,7 @@ > #include <linux/spinlock.h> > #include <linux/list.h> > #include <linux/export.h> > +#include <scsi/scsi_proto.h> > > #include <target/target_core_base.h> > #include <target/target_core_backend.h> > @@ -150,6 +151,9 @@ void core_tmr_abort_task( > if (dev->transport->tmr_notify) > dev->transport->tmr_notify(dev, TMR_ABORT_TASK, > &aborted_list); > + else > + target_complete_cmd(se_cmd, > + SAM_STAT_TASK_ABORTED); That is wrong and breaks a command lifecycle and command kref counting. target_complete_cmd is used to be called by a backend driver. > > list_del_init(&se_cmd->state_list); > target_put_cmd_and_wait(se_cmd);