2009-04-14 16:01:20

by David Howells

[permalink] [raw]
Subject: [PATCH] Fix lpfc_parse_bg_err()'s use of do_div()

Fix lpfc_parse_bg_err()'s use of do_div(). It should be passing a 64-bit
variable as the first parameter. However, since it's only using a 32-bit
variable, it doesn't need to use do_div() at all, but can instead use the
division operator.

This deals with the following warnings:

CC drivers/scsi/lpfc/lpfc_scsi.o
drivers/scsi/lpfc/lpfc_scsi.c: In function 'lpfc_parse_bg_err':
drivers/scsi/lpfc/lpfc_scsi.c:1397: warning: comparison of distinct pointer types lacks a cast
drivers/scsi/lpfc/lpfc_scsi.c:1397: warning: right shift count >= width of type
drivers/scsi/lpfc/lpfc_scsi.c:1397: warning: passing argument 1 of '__div64_32' from incompatible pointer type

Signed-off-by: David Howells <[email protected]>
---

drivers/scsi/lpfc/lpfc_scsi.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)


diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
index b1bd3fc..36fd2e7 100644
--- a/drivers/scsi/lpfc/lpfc_scsi.c
+++ b/drivers/scsi/lpfc/lpfc_scsi.c
@@ -1394,7 +1394,7 @@ lpfc_parse_bg_err(struct lpfc_hba *phba, struct lpfc_scsi_buf *lpfc_cmd,
*/
cmd->sense_buffer[8] = 0; /* Information */
cmd->sense_buffer[9] = 0xa; /* Add. length */
- do_div(bghm, cmd->device->sector_size);
+ bghm /= cmd->device->sector_size;

failing_sector = scsi_get_lba(cmd);
failing_sector += bghm;


2009-04-14 16:10:22

by James Smart

[permalink] [raw]
Subject: Re: [PATCH] Fix lpfc_parse_bg_err()'s use of do_div()

David,

I already posted the same fix on 4/7. See:
http://marc.info/?l=linux-scsi&m=123912745216961&w=2

-- james s

David Howells wrote:
> Fix lpfc_parse_bg_err()'s use of do_div(). It should be passing a 64-bit
> variable as the first parameter. However, since it's only using a 32-bit
> variable, it doesn't need to use do_div() at all, but can instead use the
> division operator.
>
> This deals with the following warnings:
>
> CC drivers/scsi/lpfc/lpfc_scsi.o
> drivers/scsi/lpfc/lpfc_scsi.c: In function 'lpfc_parse_bg_err':
> drivers/scsi/lpfc/lpfc_scsi.c:1397: warning: comparison of distinct pointer types lacks a cast
> drivers/scsi/lpfc/lpfc_scsi.c:1397: warning: right shift count >= width of type
> drivers/scsi/lpfc/lpfc_scsi.c:1397: warning: passing argument 1 of '__div64_32' from incompatible pointer type
>
> Signed-off-by: David Howells <[email protected]>
> ---
>
> drivers/scsi/lpfc/lpfc_scsi.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
>
> diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
> index b1bd3fc..36fd2e7 100644
> --- a/drivers/scsi/lpfc/lpfc_scsi.c
> +++ b/drivers/scsi/lpfc/lpfc_scsi.c
> @@ -1394,7 +1394,7 @@ lpfc_parse_bg_err(struct lpfc_hba *phba, struct lpfc_scsi_buf *lpfc_cmd,
> */
> cmd->sense_buffer[8] = 0; /* Information */
> cmd->sense_buffer[9] = 0xa; /* Add. length */
> - do_div(bghm, cmd->device->sector_size);
> + bghm /= cmd->device->sector_size;
>
> failing_sector = scsi_get_lba(cmd);
> failing_sector += bghm;
>
>

2009-04-14 16:14:10

by David Howells

[permalink] [raw]
Subject: Re: [PATCH] Fix lpfc_parse_bg_err()'s use of do_div()

James Smart <[email protected]> wrote:

> I already posted the same fix on 4/7. See:
> http://marc.info/?l=linux-scsi&m=123912745216961&w=2

Fair enough. Feel free to add my Acked-by.

David