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

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

Comments

Connor Hansen - May 30, 2011, 7:13 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_cdrom_prep_fs.:
drivers/ide/ide-cd.c:1314: warning: conversion to .unsigned int. from .int. may change the sign of the result

because queue_logical_block_size() returns unsigned short but hard_sect
is defined as int. Fix that no matter how low the potential for this
becoming a bug is.

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

> One of the legit warnings 'make W=3 drivers/ide/ide-cd.o´ generates is
> 
> drivers/ide/ide-cd.c: In function .ide_cdrom_prep_fs.:
> drivers/ide/ide-cd.c:1314: warning: conversion to .unsigned int. from .int. may change the sign of the result
> 
> because queue_logical_block_size() returns unsigned short but hard_sect
> is defined as int. Fix that no matter how low the potential for this
> becoming a bug is.
> 
> Signed-off-by: Connor Hansen <cmdkhh@gmail.com>

An 'int' can always hold as large a value as an "unsigned short" can ever
hold, so there is no real problem here.

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 6e5123b..c1de54a 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -1309,7 +1309,7 @@  static int ide_cdrom_probe_capabilities(ide_drive_t *drive)
 /* standard prep_rq_fn that builds 10 byte cmds */
 static int ide_cdrom_prep_fs(struct request_queue *q, struct request *rq)
 {
-	int hard_sect = queue_logical_block_size(q);
+	unsigned short hard_sect = queue_logical_block_size(q);
 	long block = (long)blk_rq_pos(rq) / (hard_sect >> 9);
 	unsigned long blocks = blk_rq_sectors(rq) / (hard_sect >> 9);