|
@@ -448,7 +448,7 @@ static int bt3c_load_firmware(struct bt3c_info *info,
|
|
|
{
|
|
|
char *ptr = (char *) firmware;
|
|
|
char b[9];
|
|
|
- unsigned int iobase, tmp;
|
|
|
+ unsigned int iobase, tmp, tn;
|
|
|
unsigned long size, addr, fcs;
|
|
|
int i, err = 0;
|
|
|
|
|
@@ -490,7 +490,9 @@ static int bt3c_load_firmware(struct bt3c_info *info,
|
|
|
memset(b, 0, sizeof(b));
|
|
|
for (tmp = 0, i = 0; i < size; i++) {
|
|
|
memcpy(b, ptr + (i * 2) + 2, 2);
|
|
|
- tmp += simple_strtol(b, NULL, 16);
|
|
|
+ if (kstrtouint(b, 16, &tn))
|
|
|
+ return -EINVAL;
|
|
|
+ tmp += tn;
|
|
|
}
|
|
|
|
|
|
if (((tmp + fcs) & 0xff) != 0xff) {
|
|
@@ -505,7 +507,8 @@ static int bt3c_load_firmware(struct bt3c_info *info,
|
|
|
memset(b, 0, sizeof(b));
|
|
|
for (i = 0; i < (size - 4) / 2; i++) {
|
|
|
memcpy(b, ptr + (i * 4) + 12, 4);
|
|
|
- tmp = simple_strtoul(b, NULL, 16);
|
|
|
+ if (kstrtouint(b, 16, &tmp))
|
|
|
+ return -EINVAL;
|
|
|
bt3c_put(iobase, tmp);
|
|
|
}
|
|
|
}
|