Re: [ 133/180] cciss: fix incorrect scsi status reporting

From: Ben Hutchings
Date: Thu Oct 04 2012 - 18:49:47 EST


On Tue, Oct 02, 2012 at 12:54:10AM +0200, Willy Tarreau wrote:
> 2.6.32-longterm review patch. If anyone has any objections, please let me know.
>
> ------------------
>
> From: Stephen M. Cameron <scameron@xxxxxxxxxxxxxxxxxx>
>
> commit b0cf0b118c90477d1a6811f2cd2307f6a5578362 upstream.
>
> Delete code which sets SCSI status incorrectly as it's already been set
> correctly above this incorrect code. The bug was introduced in 2009 by
> commit b0e15f6db111 ("cciss: fix typo that causes scsi status to be
> lost.")

That commit was in 2.6.33 and it changed the '<' to '<<'. It hasn't
been backported to 2.6.32.y.

[...]
> diff --git a/drivers/block/cciss_scsi.c b/drivers/block/cciss_scsi.c
> index 3315268..ad8e592 100644
> --- a/drivers/block/cciss_scsi.c
> +++ b/drivers/block/cciss_scsi.c
> @@ -747,17 +747,7 @@ complete_scsi_command( CommandList_struct *cp, int timeout, __u32 tag)
> {
> case CMD_TARGET_STATUS:
> /* Pass it up to the upper layers... */
> - if( ei->ScsiStatus)
> - {
> -#if 0
> - printk(KERN_WARNING "cciss: cmd %p "
> - "has SCSI Status = %x\n",
> - cp,
> - ei->ScsiStatus);
> -#endif
> - cmd->result |= (ei->ScsiStatus < 1);
[...]

Unless ei->ScsiStatus can be negative (it is declared as int, but
I don't think it's actually meant to be negative), this statement
is a no-op. (It was present for the entire life of this driver up
until 2.6.33, so I suspect that is the case.) So this backported
patch is unnecessary cleanup, not a bug fix.

Ben.

--
Ben Hutchings
We get into the habit of living before acquiring the habit of thinking.
- Albert Camus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/