From: Amit Patel <patelamitv@yahoo.com>
To: Andrew Morton <akpm@osdl.org>, Patrick Mansfield <patmans@us.ibm.com>
Cc: patelamitv@yahoo.com, linux-scsi@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: scsi_report_lun_scan bug?
Date: Mon, 17 Nov 2003 23:42:51 -0800 (PST) [thread overview]
Message-ID: <20031118074251.62922.qmail@web13009.mail.yahoo.com> (raw)
In-Reply-To: <20031117230033.59f1ef5c.akpm@osdl.org>
Patrick,
In my case, I have 16 luns for which report lun
command byte 3 has value 0x80. While doing the length
calculation
length = ((data[0] << 24) | (data[1] << 16) |
(data[2] << 8) | (data[3] << 0));
It calucates length as 0xffffff80 and actual number of
luns is calculated as 536870896. I just write small
program with signed and unsigned char array and it
does evaluate as 0xffffff80 as Andrew mentioned.
Thanks
Amit
#include<stdio.h>
main()
{
char x[10]={0x00,0x00,0x00,0x80};
char *p;
unsigned char *q;
int len;
int ulen;
p=(char *)x;
q=(unsigned char *) x;
len=((p[0] << 24) | (p[1] << 16) | (p[2] << 8)
| (p[3] <<0));
ulen=((q[0] << 24) |(q[1] << 16) | (q[2] << 8)
| (q[3] <<0));
printf("len= %d len=%x\n",len,len);
printf("ulen= %d ulen=%x\n",ulen,ulen);
}
--- Andrew Morton <akpm@osdl.org> wrote:
> Patrick Mansfield <patmans@us.ibm.com> wrote:
> >
> > On Mon, Nov 17, 2003 at 06:48:33PM -0800, Amit
> Patel wrote:
> > > Hi,
> > >
> > > I am using 2.6-test9-mm3. I noticed while doing
> > > scsi_report_lun_scan(scsi_scan.c:891) the data
> > > returned is assigned(scsi_scan.c:993) to signed
> char
> > > array which causes the reported number of luns
> to be
> > > huge while calculating num_luns to scan. Is
> there any
> > > particular reason to be data is signed or just a
> bug?
> > >
> > > I changed it to unsigned char and it seems to
> work
> > > fine. I have attached a diff of scsi_scan.c. Let
> me
> > > know if I am missing something.
> >
> > I don't see why making it signed or unsigned would
> make any difference.
>
>
> length = ((data[0] << 24) | (data[1] << 16) |
> (data[2] << 8) | (data[3] << 0));
>
> If data[3] is 0xff, this expression will always
> evaluate to
> 0xffffffff. etcetera.
>
> > It should really be a u8, since it is a pointer to
> an array of bytes.
> >
> > (And all the scsi_cmd[]'s should be u8.)
>
> Yup.
>
> diff -puN
> drivers/scsi/scsi_scan.c~scsi_report_lun-fix
> drivers/scsi/scsi_scan.c
> --- 25/drivers/scsi/scsi_scan.c~scsi_report_lun-fix
> 2003-11-17 20:22:49.000000000 -0800
> +++ 25-akpm/drivers/scsi/scsi_scan.c 2003-11-17
> 20:22:49.000000000 -0800
> @@ -899,7 +899,7 @@ static int
> scsi_report_lun_scan(struct s
> unsigned int retries;
> struct scsi_lun *lunp, *lun_data;
> struct scsi_request *sreq;
> - char *data;
> + u8 *data;
>
> /*
> * Only support SCSI-3 and up devices.
> @@ -990,7 +990,7 @@ static int
> scsi_report_lun_scan(struct s
> /*
> * Get the length from the first four bytes of
> lun_data.
> */
> - data = (char *) lun_data->scsi_lun;
> + data = (u8 *) lun_data->scsi_lun;
> length = ((data[0] << 24) | (data[1] << 16) |
> (data[2] << 8) | (data[3] << 0));
>
>
> _
>
__________________________________
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
http://antispam.yahoo.com/whatsnewfree
next prev parent reply other threads:[~2003-11-18 7:42 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-11-18 2:48 scsi_report_lun_scan bug? Amit Patel
2003-11-18 2:54 ` Matthew Wilcox
2003-11-18 3:10 ` Amit Patel
2003-11-18 5:52 ` Patrick Mansfield
2003-11-18 7:00 ` Andrew Morton
2003-11-18 7:42 ` Amit Patel [this message]
2003-11-20 1:56 ` State Model for scsi device badness Amit Patel
2003-11-20 19:01 ` State Model for scsi device badness PATCH Amit Patel
2003-11-20 19:02 ` James Bottomley
2003-11-21 2:37 ` Mike Anderson
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=20031118074251.62922.qmail@web13009.mail.yahoo.com \
--to=patelamitv@yahoo.com \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=patmans@us.ibm.com \
/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