From: Thinh Nguyen Date: Wed, 11 Dec 2024 00:34:15 +0000 (+0000) Subject: usb: gadget: f_tcm: Track BOT command kref X-Git-Tag: v6.14-rc1~69^2~44 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=de92fb3fc2bd20ac9ad267af4dfb075b8e792fbc;p=linux-block.git usb: gadget: f_tcm: Track BOT command kref 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 Link: https://lore.kernel.org/r/e791c639e91b5d91a8787f5d6902e8c58f1dc172.1733876548.git.Thinh.Nguyen@synopsys.com Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/usb/gadget/function/f_tcm.c b/drivers/usb/gadget/function/f_tcm.c index be7d8df360d9..72e7d4558eef 100644 --- a/drivers/usb/gadget/function/f_tcm.c +++ b/drivers/usb/gadget/function/f_tcm.c @@ -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: