From: Damien Le Moal <Damien.LeMoal@wdc.com>
To: Bart Van Assche <bvanassche@acm.org>,
"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
"Martin K . Petersen" <martin.petersen@oracle.com>,
"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
"usb-storage@lists.one-eyed-alien.net"
<usb-storage@lists.one-eyed-alien.net>,
Alan Stern <stern@rowland.harvard.edu>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Justin Piszcz <jpiszcz@lucidpixels.com>
Subject: Re: [PATCH v2] scsi: Fix scsi_get/set_resid() interface
Date: Wed, 30 Oct 2019 16:21:31 +0000 [thread overview]
Message-ID: <BYAPR04MB5816D4B866F2E7CC421E8488E7600@BYAPR04MB5816.namprd04.prod.outlook.com> (raw)
In-Reply-To: af516590-58dc-0377-5c54-ac63cffbafc8@acm.org
On 2019/10/30 16:15, Bart Van Assche wrote:
> On 10/30/19 2:08 AM, Damien Le Moal wrote:
>> struct scsi_cmnd cmd->req.resid_len which is returned and set
>> respectively by the helper functions scsi_get_resid() and
>> scsi_set_resid() is an unsigned int. Reflect this fact in the interface
>> of these helper functions.
>>
>> Also fix compilation errors due to min() and max() type mismatch
>> introduced by this change in scsi debug code, usb transport code and in
>> the USB ENE card reader driver.
> Please answer my question about how a SCSI LLD should report residual
> overflows. I think this patch is incompatible with the approach used by
> the SRP initiator driver:
>
> if (unlikely(rsp->flags & SRP_RSP_FLAG_DIUNDER))
> scsi_set_resid(scmnd, be32_to_cpu(rsp->data_in_res_cnt));
be32_to_cpu(rsp->data_in_res_cnt) is always >= 0 so no problems.
> else if (unlikely(rsp->flags & SRP_RSP_FLAG_DIOVER))
> scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_in_res_cnt));
-be32_to_cpu(rsp->data_in_res_cnt) is always <= 0. But it does *not*
matter if my patch is applied or not, this negative value gets stored
into scmd->req.resid_len which is an *unsigned int*.
How does that work ?
My patch changes the function resid argument type and that function is
inline, so in practice, there are 0 changes, none whatsoever, isn't it ?
The problem you are raising here may exist, and how the scsi core will
handle a negative value cast to an unsigned int, likely resulting in a
value far larger than the command buffer size, is certainly a serious
concern. But it is unrelated to what my patch does.
If you feel strongly about it, I have absolutely no problem with
dropping the patch. I just would like that it be dropped for the right
reasons...
> else if (unlikely(rsp->flags & SRP_RSP_FLAG_DOUNDER))
> scsi_set_resid(scmnd, be32_to_cpu(rsp->data_out_res_cnt));
> else if (unlikely(rsp->flags & SRP_RSP_FLAG_DOOVER))
> scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_out_res_cnt));
>
> Thanks,
>
> Bart.
>
--
Damien Le Moal
Western Digital Research
next prev parent reply other threads:[~2019-10-30 16:21 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-30 9:08 [PATCH v2] scsi: Fix scsi_get/set_resid() interface Damien Le Moal
2019-10-30 15:15 ` Bart Van Assche
2019-10-30 16:21 ` Damien Le Moal [this message]
2019-10-30 17:01 ` Bart Van Assche
2019-10-31 8:39 ` Hannes Reinecke
2019-11-05 0:11 ` Damien Le Moal
2019-11-05 5:18 ` Martin K. Petersen
2019-11-05 5:24 ` Damien Le Moal
2019-11-06 4:31 ` Martin K. Petersen
2019-11-08 16:24 ` Bart Van Assche
2019-11-09 2:36 ` Martin K. Petersen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BYAPR04MB5816D4B866F2E7CC421E8488E7600@BYAPR04MB5816.namprd04.prod.outlook.com \
--to=damien.lemoal@wdc.com \
--cc=bvanassche@acm.org \
--cc=gregkh@linuxfoundation.org \
--cc=jpiszcz@lucidpixels.com \
--cc=linux-scsi@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=stern@rowland.harvard.edu \
--cc=usb-storage@lists.one-eyed-alien.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).