diff options
author | Maggie <xmzhang@brocade.com> | 2010-11-29 21:21:32 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-12-21 13:24:16 -0500 |
commit | 52f94b6fd0d1ff9d935c52f8a6360834ed871d92 (patch) | |
tree | 09a71f556a01fa71f37aacdc1da37bf60131f0d6 /drivers/scsi/bfa/bfad_debugfs.c | |
parent | 3db86353abba4549f665fbdde8572d619566afbb (diff) |
[SCSI] bfa: fix regular sparse check warnings.
Fix all sparse check warnings from make C=2.
Signed-off-by: Maggie <xmzhang@brocade.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/bfa/bfad_debugfs.c')
-rw-r--r-- | drivers/scsi/bfa/bfad_debugfs.c | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/drivers/scsi/bfa/bfad_debugfs.c b/drivers/scsi/bfa/bfad_debugfs.c index 1fedeeb4ac1f..0fbd620474c7 100644 --- a/drivers/scsi/bfa/bfad_debugfs.c +++ b/drivers/scsi/bfa/bfad_debugfs.c | |||
@@ -208,7 +208,7 @@ bfad_debugfs_read(struct file *file, char __user *buf, | |||
208 | if (!debug || !debug->debug_buffer) | 208 | if (!debug || !debug->debug_buffer) |
209 | return 0; | 209 | return 0; |
210 | 210 | ||
211 | return memory_read_from_buffer(buf, nbytes, pos, | 211 | return simple_read_from_buffer(buf, nbytes, pos, |
212 | debug->debug_buffer, debug->buffer_len); | 212 | debug->debug_buffer, debug->buffer_len); |
213 | } | 213 | } |
214 | 214 | ||
@@ -254,7 +254,7 @@ bfad_debugfs_read_regrd(struct file *file, char __user *buf, | |||
254 | if (!bfad->regdata) | 254 | if (!bfad->regdata) |
255 | return 0; | 255 | return 0; |
256 | 256 | ||
257 | rc = memory_read_from_buffer(buf, nbytes, pos, | 257 | rc = simple_read_from_buffer(buf, nbytes, pos, |
258 | bfad->regdata, bfad->reglen); | 258 | bfad->regdata, bfad->reglen); |
259 | 259 | ||
260 | if ((*pos + nbytes) >= bfad->reglen) { | 260 | if ((*pos + nbytes) >= bfad->reglen) { |
@@ -279,15 +279,31 @@ bfad_debugfs_write_regrd(struct file *file, const char __user *buf, | |||
279 | u32 *regbuf; | 279 | u32 *regbuf; |
280 | void __iomem *rb, *reg_addr; | 280 | void __iomem *rb, *reg_addr; |
281 | unsigned long flags; | 281 | unsigned long flags; |
282 | void *kern_buf; | ||
282 | 283 | ||
283 | rc = sscanf(buf, "%x:%x", &addr, &len); | 284 | kern_buf = kzalloc(nbytes, GFP_KERNEL); |
285 | |||
286 | if (!kern_buf) { | ||
287 | printk(KERN_INFO "bfad[%d]: Failed to allocate buffer\n", | ||
288 | bfad->inst_no); | ||
289 | return -ENOMEM; | ||
290 | } | ||
291 | |||
292 | if (copy_from_user(kern_buf, (void __user *)buf, nbytes)) { | ||
293 | kfree(kern_buf); | ||
294 | return -ENOMEM; | ||
295 | } | ||
296 | |||
297 | rc = sscanf(kern_buf, "%x:%x", &addr, &len); | ||
284 | if (rc < 2) { | 298 | if (rc < 2) { |
285 | printk(KERN_INFO | 299 | printk(KERN_INFO |
286 | "bfad[%d]: %s failed to read user buf\n", | 300 | "bfad[%d]: %s failed to read user buf\n", |
287 | bfad->inst_no, __func__); | 301 | bfad->inst_no, __func__); |
302 | kfree(kern_buf); | ||
288 | return -EINVAL; | 303 | return -EINVAL; |
289 | } | 304 | } |
290 | 305 | ||
306 | kfree(kern_buf); | ||
291 | kfree(bfad->regdata); | 307 | kfree(bfad->regdata); |
292 | bfad->regdata = NULL; | 308 | bfad->regdata = NULL; |
293 | bfad->reglen = 0; | 309 | bfad->reglen = 0; |
@@ -339,14 +355,30 @@ bfad_debugfs_write_regwr(struct file *file, const char __user *buf, | |||
339 | int addr, val, rc; | 355 | int addr, val, rc; |
340 | void __iomem *reg_addr; | 356 | void __iomem *reg_addr; |
341 | unsigned long flags; | 357 | unsigned long flags; |
358 | void *kern_buf; | ||
359 | |||
360 | kern_buf = kzalloc(nbytes, GFP_KERNEL); | ||
361 | |||
362 | if (!kern_buf) { | ||
363 | printk(KERN_INFO "bfad[%d]: Failed to allocate buffer\n", | ||
364 | bfad->inst_no); | ||
365 | return -ENOMEM; | ||
366 | } | ||
367 | |||
368 | if (copy_from_user(kern_buf, (void __user *)buf, nbytes)) { | ||
369 | kfree(kern_buf); | ||
370 | return -ENOMEM; | ||
371 | } | ||
342 | 372 | ||
343 | rc = sscanf(buf, "%x:%x", &addr, &val); | 373 | rc = sscanf(kern_buf, "%x:%x", &addr, &val); |
344 | if (rc < 2) { | 374 | if (rc < 2) { |
345 | printk(KERN_INFO | 375 | printk(KERN_INFO |
346 | "bfad[%d]: %s failed to read user buf\n", | 376 | "bfad[%d]: %s failed to read user buf\n", |
347 | bfad->inst_no, __func__); | 377 | bfad->inst_no, __func__); |
378 | kfree(kern_buf); | ||
348 | return -EINVAL; | 379 | return -EINVAL; |
349 | } | 380 | } |
381 | kfree(kern_buf); | ||
350 | 382 | ||
351 | addr &= BFA_REG_ADDRMSK(bfa); /* offset only 17 bit and word align */ | 383 | addr &= BFA_REG_ADDRMSK(bfa); /* offset only 17 bit and word align */ |
352 | 384 | ||
@@ -359,7 +391,7 @@ bfad_debugfs_write_regwr(struct file *file, const char __user *buf, | |||
359 | return -EINVAL; | 391 | return -EINVAL; |
360 | } | 392 | } |
361 | 393 | ||
362 | reg_addr = (u32 *) ((u8 *) bfa_ioc_bar0(ioc) + addr); | 394 | reg_addr = (bfa_ioc_bar0(ioc)) + addr; |
363 | spin_lock_irqsave(&bfad->bfad_lock, flags); | 395 | spin_lock_irqsave(&bfad->bfad_lock, flags); |
364 | writel(val, reg_addr); | 396 | writel(val, reg_addr); |
365 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); | 397 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); |