Commit f72401e94d159bc4b2beab51d74e956da2c32e0a

Authored by Julia Lawall
Committed by Wim Van Sebroeck
1 parent 89078d572e

watchdog: s3c2410_wdt.c: Convert release_resource to release_region/release_mem_region

Request_mem_region should be used with release_mem_region, not
release_resource.

The semantic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@@
expression x,E;
@@
*x = request_mem_region(...)
... when != release_mem_region(x)
    when != x = E
* release_resource(x);
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Cc: stable <stable@kernel.org>

Showing 1 changed file with 8 additions and 11 deletions Side-by-side Diff

drivers/watchdog/s3c2410_wdt.c
... ... @@ -402,7 +402,6 @@
402 402  
403 403 static int __devinit s3c2410wdt_probe(struct platform_device *pdev)
404 404 {
405   - struct resource *res;
406 405 struct device *dev;
407 406 unsigned int wtcon;
408 407 int started = 0;
409 408  
410 409  
... ... @@ -416,20 +415,19 @@
416 415  
417 416 /* get the memory region for the watchdog timer */
418 417  
419   - res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
420   - if (res == NULL) {
  418 + wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
  419 + if (wdt_mem == NULL) {
421 420 dev_err(dev, "no memory resource specified\n");
422 421 return -ENOENT;
423 422 }
424 423  
425   - size = resource_size(res);
426   - wdt_mem = request_mem_region(res->start, size, pdev->name);
427   - if (wdt_mem == NULL) {
  424 + size = resource_size(wdt_mem);
  425 + if (!request_mem_region(wdt_mem->start, size, pdev->name)) {
428 426 dev_err(dev, "failed to get memory region\n");
429 427 return -EBUSY;
430 428 }
431 429  
432   - wdt_base = ioremap(res->start, size);
  430 + wdt_base = ioremap(wdt_mem->start, size);
433 431 if (wdt_base == NULL) {
434 432 dev_err(dev, "failed to ioremap() region\n");
435 433 ret = -EINVAL;
... ... @@ -524,8 +522,8 @@
524 522 iounmap(wdt_base);
525 523  
526 524 err_req:
527   - release_resource(wdt_mem);
528   - kfree(wdt_mem);
  525 + release_mem_region(wdt_mem->start, size);
  526 + wdt_mem = NULL;
529 527  
530 528 return ret;
531 529 }
... ... @@ -545,8 +543,7 @@
545 543  
546 544 iounmap(wdt_base);
547 545  
548   - release_resource(wdt_mem);
549   - kfree(wdt_mem);
  546 + release_mem_region(wdt_mem->start, resource_size(wdt_mem));
550 547 wdt_mem = NULL;
551 548 return 0;
552 549 }