Patchwork [2/2] ide-cd: Fix another signedness warning

login
register
mail settings
Submitter Connor Hansen
Date May 30, 2011, 7:26 a.m.
Message ID <1306740418-565-1-git-send-email-cmdkhh@gmail.com>
Download mbox | patch
Permalink /patch/97892/
State Rejected
Delegated to: David Miller
Headers show

Comments

Connor Hansen - May 30, 2011, 7:26 a.m.
One of the legit warnings 'make W=3 drivers/ide/ide-cd.o generates is

drivers/ide/ide-cd.c: In function ide_cd_queue_pc:
drivers/ide/ide-cd.c:451:3: warning: conversion to unsigned int from
      int may change the sign of the result

timeout is passed as an int, but is declared as an unsigned int in
struct request in include/linux/blkdev.h

Signed-off-by: Connor Hansen <cmdkhh@gmail.com>
---
 drivers/ide/ide-cd.c |    2 +-
 drivers/ide/ide-cd.h |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
David Miller - May 31, 2011, 10:24 p.m.
From: Connor Hansen <cmdkhh@gmail.com>
Date: Mon, 30 May 2011 00:26:58 -0700

> One of the legit warnings 'make W=3 drivers/ide/ide-cd.o generates is
> 
> drivers/ide/ide-cd.c: In function ide_cd_queue_pc:
> drivers/ide/ide-cd.c:451:3: warning: conversion to unsigned int from
>       int may change the sign of the result
> 
> timeout is passed as an int, but is declared as an unsigned int in
> struct request in include/linux/blkdev.h
> 
> Signed-off-by: Connor Hansen <cmdkhh@gmail.com>

This is beyond academic and may in fact introduce strange things.

All except one call site passes "0" for the timeout.

And that one call site passes packet_command->timeout from userspace
which is an 'int'.

I'm not applying this.
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index c1de54a..f509db5 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -422,7 +422,7 @@  static void ide_cd_request_sense_fixup(ide_drive_t *drive, struct ide_cmd *cmd)
 
 int ide_cd_queue_pc(ide_drive_t *drive, const unsigned char *cmd,
 		    int write, void *buffer, unsigned *bufflen,
-		    struct request_sense *sense, int timeout,
+		    struct request_sense *sense, unsigned int timeout,
 		    unsigned int cmd_flags)
 {
 	struct cdrom_info *info = drive->driver_data;
diff --git a/drivers/ide/ide-cd.h b/drivers/ide/ide-cd.h
index 1efc936..24292ee 100644
--- a/drivers/ide/ide-cd.h
+++ b/drivers/ide/ide-cd.h
@@ -101,7 +101,7 @@  void ide_cd_log_error(const char *, struct request *, struct request_sense *);
 
 /* ide-cd.c functions used by ide-cd_ioctl.c */
 int ide_cd_queue_pc(ide_drive_t *, const unsigned char *, int, void *,
-		    unsigned *, struct request_sense *, int, unsigned int);
+		    unsigned *, struct request_sense *, unsigned int, unsigned int);
 int ide_cd_read_toc(ide_drive_t *, struct request_sense *);
 int ide_cdrom_get_capabilities(ide_drive_t *, u8 *);
 void ide_cdrom_update_speed(ide_drive_t *, u8 *);