usb: gadget: f_tcm: Track BOT command kref
authorThinh Nguyen <Thinh.Nguyen@synopsys.com>
Wed, 11 Dec 2024 00:34:15 +0000 (00:34 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 24 Dec 2024 07:56:08 +0000 (08:56 +0100)
Set TARGET_SCF_ACK_KREF flag and allow f_tcm to take the BOT command
reference. A usb request may be canceled, the f_tcm knows this. Let it
decides if the command should be freed. This is the same as how the UAS
interface is done.

Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Link: https://lore.kernel.org/r/e791c639e91b5d91a8787f5d6902e8c58f1dc172.1733876548.git.Thinh.Nguyen@synopsys.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/function/f_tcm.c

index be7d8df360d936f169790d036643361f8e034952..72e7d4558eefd805b680941234e188d32ce07cdb 100644 (file)
@@ -1466,6 +1466,7 @@ static void bot_cmd_work(struct work_struct *work)
        struct se_cmd *se_cmd;
        struct tcm_usbg_nexus *tv_nexus;
        struct usbg_tpg *tpg;
+       int flags = TARGET_SCF_ACK_KREF;
        int dir;
 
        /*
@@ -1494,7 +1495,7 @@ static void bot_cmd_work(struct work_struct *work)
 
        target_submit_cmd(se_cmd, tv_nexus->tvn_se_sess,
                          cmd->cmd_buf, cmd->sense_iu.sense, cmd->unpacked_lun,
-                         cmd->data_len, cmd->prio_attr, dir, 0);
+                         cmd->data_len, cmd->prio_attr, dir, flags);
        return;
 
 out: