projects
/
linux-2.6-block.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[linux-2.6-block.git]
/
drivers
/
bluetooth
/
bt3c_cs.c
diff --git
a/drivers/bluetooth/bt3c_cs.c
b/drivers/bluetooth/bt3c_cs.c
index 25b0cf952b91757fcfa9abb85ab9cc2a74545218..54713833951a9ddd6fa34780a263942863e242a2 100644
(file)
--- a/
drivers/bluetooth/bt3c_cs.c
+++ b/
drivers/bluetooth/bt3c_cs.c
@@
-448,7
+448,7
@@
static int bt3c_load_firmware(struct bt3c_info *info,
{
char *ptr = (char *) firmware;
char b[9];
{
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;
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);
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) {
}
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);
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);
}
}
bt3c_put(iobase, tmp);
}
}