Message ID | 20170705124229.GH4076@linux-x5ow.site (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On 05/07/17 13:42, Johannes Thumshirn wrote: > On Wed, Jul 05, 2017 at 01:19:09PM +0100, Chris Clayton wrote: >> I'm happy to test any patches you may propose. > > Can you verify this fix? Preferedably with using Nero. It passes my small > reproducer: > Thanks Johannes. With your patch applied to 4.12.0, all three of the nero applications can now detect my drives again. Excellent work! Thank you. Tested-by: Chris Clayton <chris2553@googlemail.com> > From f52502180cc3843f8acc956253af2575245546a8 Mon Sep 17 00:00:00 2001 > From: Johannes Thumshirn <jthumshirn@suse.de> > Date: Wed, 5 Jul 2017 14:31:47 +0200 > Subject: [PATCH] scsi: sg: fix SG_DXFER_FROM_DEV transfers > > SG_DXFER_FROM_DEV transfers do not have a dxferp as we set it to NULL, > but must have a length bigger than 0. This fixes a regression introduced > by commit 28676d869bbb ("scsi: sg: check for valid direction before > starting the request") > > Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de> > Fixes: 28676d869bbb ("scsi: sg: check for valid direction before starting the request") > --- > drivers/scsi/sg.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c > index 21225d62b0c1..3c91593260aa 100644 > --- a/drivers/scsi/sg.c > +++ b/drivers/scsi/sg.c > @@ -758,8 +758,11 @@ static bool sg_is_valid_dxfer(sg_io_hdr_t *hp) > if (hp->dxferp || hp->dxfer_len > 0) > return false; > return true; > - case SG_DXFER_TO_DEV: > case SG_DXFER_FROM_DEV: > + if (hp->dxferp || hp->dxfer_len < 0) > + return false; > + return true; > + case SG_DXFER_TO_DEV: > case SG_DXFER_TO_FROM_DEV: > if (!hp->dxferp || hp->dxfer_len == 0) > return false; >
On Wed, Jul 05, 2017 at 02:45:06PM +0100, Chris Clayton wrote: > With your patch applied to 4.12.0, all three of the nero applications can now detect my drives again. > > Excellent work! Thank you. > > Tested-by: Chris Clayton <chris2553@googlemail.com> Thanks for confirmation.
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c index 21225d62b0c1..3c91593260aa 100644 --- a/drivers/scsi/sg.c +++ b/drivers/scsi/sg.c @@ -758,8 +758,11 @@ static bool sg_is_valid_dxfer(sg_io_hdr_t *hp) if (hp->dxferp || hp->dxfer_len > 0) return false; return true; - case SG_DXFER_TO_DEV: case SG_DXFER_FROM_DEV: + if (hp->dxferp || hp->dxfer_len < 0) + return false; + return true; + case SG_DXFER_TO_DEV: case SG_DXFER_TO_FROM_DEV: if (!hp->dxferp || hp->dxfer_len == 0) return false;