kdev_t.value is not an int. Code looks fishy. scsi/st.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN drivers/scsi/st.c~st-warning-fix drivers/scsi/st.c --- 25-power4/drivers/scsi/st.c~st-warning-fix 2003-02-10 23:22:53.000000000 -0800 +++ 25-power4-akpm/drivers/scsi/st.c 2003-02-10 23:22:53.000000000 -0800 @@ -3618,7 +3618,7 @@ __setup("st=", st_setup); static ssize_t st_device_kdev_read(struct device *dev, char *page) { kdev_t kdev; - kdev.value=(int)dev->driver_data; + kdev.value=(unsigned long)dev->driver_data; return sprintf(page, "%x\n",kdev.value); } static DEVICE_ATTR(kdev,S_IRUGO,st_device_kdev_read,NULL); _