target/core: Avoid that a kernel oops can be triggered when an XCOPY command fails
diff mbox series

Message ID 20181105184011.94041-1-bvanassche@acm.org
State New, archived
Headers show
Series
  • target/core: Avoid that a kernel oops can be triggered when an XCOPY command fails
Related show

Commit Message

Bart Van Assche Nov. 5, 2018, 6:40 p.m. UTC
Fixes: aa73237dcb2d ("scsi: target/core: Always call transport_complete_callback() upon failure")
Cc: Nicholas Bellinger <nab@linux-iscsi.org>
Cc: David Disseldorp <ddiss@suse.de>
Cc: Mike Christie <mchristi@redhat.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.de>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
 drivers/target/target_core_transport.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

David Disseldorp Nov. 5, 2018, 7:09 p.m. UTC | #1
On Mon,  5 Nov 2018 10:40:11 -0800, Bart Van Assche wrote:

> Fixes: aa73237dcb2d ("scsi: target/core: Always call transport_complete_callback() upon failure")
> Cc: Nicholas Bellinger <nab@linux-iscsi.org>
> Cc: David Disseldorp <ddiss@suse.de>
> Cc: Mike Christie <mchristi@redhat.com>
> Cc: Christoph Hellwig <hch@lst.de>
> Cc: Hannes Reinecke <hare@suse.de>
> Signed-off-by: Bart Van Assche <bvanassche@acm.org>
> ---
>  drivers/target/target_core_transport.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
> index e31e4fc31aa1..2cfd61d62e97 100644
> --- a/drivers/target/target_core_transport.c
> +++ b/drivers/target/target_core_transport.c
> @@ -1778,7 +1778,7 @@ EXPORT_SYMBOL(target_submit_tmr);
>  void transport_generic_request_failure(struct se_cmd *cmd,
>  		sense_reason_t sense_reason)
>  {
> -	int ret = 0;
> +	int ret = 0, post_ret;
>  
>  	pr_debug("-----[ Storage Engine Exception; sense_reason %d\n",
>  		 sense_reason);
> @@ -1790,7 +1790,7 @@ void transport_generic_request_failure(struct se_cmd *cmd,
>  	transport_complete_task_attr(cmd);
>  
>  	if (cmd->transport_complete_callback)
> -		cmd->transport_complete_callback(cmd, false, NULL);
> +		cmd->transport_complete_callback(cmd, false, &post_ret);
>  
>  	if (transport_check_aborted_status(cmd, 1))
>  		return;

Reviewed-by: David Disseldorp <ddiss@suse.de>
David Disseldorp Nov. 5, 2018, 11:19 p.m. UTC | #2
On Mon,  5 Nov 2018 10:40:11 -0800, Bart Van Assche wrote:

> Avoid that a kernel oops can be triggered when an XCOPY command fails

FWIW, that should be COMPARE_AND_WRITE instead of XCOPY.

Cheers, David

Patch
diff mbox series

diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
index e31e4fc31aa1..2cfd61d62e97 100644
--- a/drivers/target/target_core_transport.c
+++ b/drivers/target/target_core_transport.c
@@ -1778,7 +1778,7 @@  EXPORT_SYMBOL(target_submit_tmr);
 void transport_generic_request_failure(struct se_cmd *cmd,
 		sense_reason_t sense_reason)
 {
-	int ret = 0;
+	int ret = 0, post_ret;
 
 	pr_debug("-----[ Storage Engine Exception; sense_reason %d\n",
 		 sense_reason);
@@ -1790,7 +1790,7 @@  void transport_generic_request_failure(struct se_cmd *cmd,
 	transport_complete_task_attr(cmd);
 
 	if (cmd->transport_complete_callback)
-		cmd->transport_complete_callback(cmd, false, NULL);
+		cmd->transport_complete_callback(cmd, false, &post_ret);
 
 	if (transport_check_aborted_status(cmd, 1))
 		return;