lkml.org 
[lkml]   [2009]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [Compile Warning] 2.6.30-rc8 build
    Date
    On Fri June 5 2009, Roland Dreier wrote:
    >
    > > I can't argue with gcc on this one either:
    > >
    > > drivers/scsi/sd.c: In function 'sd_read_capacity':
    > > drivers/scsi/sd.c:1451: warning: comparison is always false due to limited range of data type
    > >
    > > It reads to my eyes as if the function can never
    > > select read_capacity_16 for very large devices.
    >
    > The code is:
    >
    > if ((sizeof(sdkp->capacity) > 4) &&
    > (sdkp->capacity > 0xffffffffULL)) {
    >
    > sdkp->capacity is a sector_t, and <linux/types.h> has:
    >
    > #ifdef CONFIG_LBD
    > typedef u64 sector_t;
    > typedef u64 blkcnt_t;
    > #else
    > typedef unsigned long sector_t;
    > typedef unsigned long blkcnt_t;
    > #endif
    >
    > so if you don't set CONFIG_LBD on a 32-bit architecture, then you are
    > correct that sd.c won't ever hit the READ_CAPACITY(16) case, and the
    > kernel won't be able to handle large SCSI disks.
    >
    >

    Perhaps then let gcc coherce the test value into a local sector_t holder
    to make the warning go away (it would still be protected by the >4 thing).

    Not a problem here - NetBooks don't (yet) come with that big a disk. ;)

    Thanks
    Mike


    \
     
     \ /
      Last update: 2009-06-05 19:51    [W:3.361 / U:1.820 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site