chiark / gitweb /
scsi_id: compiler warning on 32-bit
authorAlan Jenkins <alan-jenkins@tuffmail.co.uk>
Fri, 19 Sep 2008 14:53:25 +0000 (14:53 +0000)
committerKay Sievers <kay.sievers@vrfy.org>
Sat, 20 Sep 2008 05:14:46 +0000 (22:14 -0700)
The sg_io_v4 interface passes pointers as u64s.  It turns out GCC
disapproves of us casting a u64 straight to a 32 bit pointer.

cc1: warnings being treated as errors
scsi_serial.c: In function ‘sg_err_category4’:
scsi_serial.c:159: warning: cast to pointer from integer of different size
scsi_serial.c: In function ‘scsi_dump_v4’:
scsi_serial.c:303: warning: cast to pointer from integer of different size

extras/scsi_id/scsi_serial.c

index 757f41d..20d30cf 100644 (file)
@@ -156,7 +156,7 @@ static int sg_err_category4(struct udev *udev, struct sg_io_v4 *hp)
 {
        return sg_err_category_new(udev, hp->device_status, 0,
                                   hp->transport_status, hp->driver_status,
-                                  (unsigned char *)hp->response,
+                                  (unsigned char *)(uintptr_t)hp->response,
                                   hp->response_len);
 }
 
@@ -300,7 +300,7 @@ static int scsi_dump_v4(struct udev *udev,
            dev_scsi->kernel, io->driver_status, io->transport_status,
             io->device_status);
        if (io->device_status == SCSI_CHECK_CONDITION)
-               return scsi_dump_sense(udev, dev_scsi, (unsigned char *)io->response,
+               return scsi_dump_sense(udev, dev_scsi, (unsigned char *)(uintptr_t)io->response,
                                       io->response_len);
        else
                return -1;