2011-05-30 07:13:39

by Connor Hansen

[permalink] [raw]
Subject: [PATCH 1/2] ide-cd: Fix signedness warning

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 <[email protected]>
---
drivers/ide/ide-cd.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

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);

--
1.7.4.4


2011-05-31 22:25:04

by David Miller

[permalink] [raw]
Subject: Re: [PATCH 1/2] ide-cd: Fix signedness warning

From: Connor Hansen <[email protected]>
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 <[email protected]>

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.