| From stable-bounces@linux.kernel.org Fri Mar 21 08:43:09 2008 |
| Date: Fri, 21 Mar 2008 15:15:03 GMT |
| Message-Id: <200803211515.m2LFF3YX032293@hera.kernel.org> |
| From: jejb@kernel.org |
| To: jejb@kernel.org, stable@kernel.org |
| Subject: SCSI advansys: Fix bug in AdvLoadMicrocode |
| |
| From: Matthew Wilcox <matthew@wil.cx> |
| commit: 951b62c11e86acf8c55d9828aa8c921575023c29 |
| |
| buf[i] can be up to 0xfd, so doubling it and assigning the result to an |
| unsigned char truncates the value. Just use an unsigned int instead; |
| it's only a temporary. |
| |
| Signed-off-by: Matthew Wilcox <willy@linux.intel.com> |
| Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com> |
| Signed-off-by: Chris Wright <chrisw@sous-sol.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| drivers/scsi/advansys.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/scsi/advansys.c |
| +++ b/drivers/scsi/advansys.c |
| @@ -6439,7 +6439,7 @@ static int AdvLoadMicrocode(AdvPortAddr |
| i += 2; |
| len += 2; |
| } else { |
| - unsigned char off = buf[i] * 2; |
| + unsigned int off = buf[i] * 2; |
| unsigned short word = (buf[off + 1] << 8) | buf[off]; |
| AdvWriteWordAutoIncLram(iop_base, word); |
| len += 2; |