Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

hwmon: Use resource_size

Use the function resource_size, which reduces the chance of introducing
off-by-one errors in calculating the resource size.

The semantic patch that makes this change is as follows:
(http://www.emn.fr/x-info/coccinelle/)

// <smpl>
@@
struct resource *res;
@@

- (res->end - res->start) + 1
+ resource_size(res)
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Jean Delvare <khali@linux-fr.org>

authored by

Julia Lawall and committed by
Jean Delvare
86855b0c 6055fae8

+6 -6
+3 -3
drivers/hwmon/pc87427.c
··· 435 435 /* This will need to be revisited when we add support for 436 436 temperature and voltage monitoring. */ 437 437 res = platform_get_resource(pdev, IORESOURCE_IO, 0); 438 - if (!request_region(res->start, res->end - res->start + 1, DRVNAME)) { 438 + if (!request_region(res->start, resource_size(res), DRVNAME)) { 439 439 err = -EBUSY; 440 440 dev_err(&pdev->dev, "Failed to request region 0x%lx-0x%lx\n", 441 441 (unsigned long)res->start, (unsigned long)res->end); ··· 475 475 sysfs_remove_group(&pdev->dev.kobj, &pc87427_group_fan[i]); 476 476 } 477 477 exit_release_region: 478 - release_region(res->start, res->end - res->start + 1); 478 + release_region(res->start, resource_size(res)); 479 479 exit_kfree: 480 480 platform_set_drvdata(pdev, NULL); 481 481 kfree(data); ··· 500 500 kfree(data); 501 501 502 502 res = platform_get_resource(pdev, IORESOURCE_IO, 0); 503 - release_region(res->start, res->end - res->start + 1); 503 + release_region(res->start, resource_size(res)); 504 504 505 505 return 0; 506 506 }
+3 -3
drivers/hwmon/vt1211.c
··· 1136 1136 } 1137 1137 1138 1138 res = platform_get_resource(pdev, IORESOURCE_IO, 0); 1139 - if (!request_region(res->start, res->end - res->start + 1, DRVNAME)) { 1139 + if (!request_region(res->start, resource_size(res), DRVNAME)) { 1140 1140 err = -EBUSY; 1141 1141 dev_err(dev, "Failed to request region 0x%lx-0x%lx\n", 1142 1142 (unsigned long)res->start, (unsigned long)res->end); ··· 1209 1209 dev_err(dev, "Sysfs interface creation failed (%d)\n", err); 1210 1210 EXIT_DEV_REMOVE_SILENT: 1211 1211 vt1211_remove_sysfs(pdev); 1212 - release_region(res->start, res->end - res->start + 1); 1212 + release_region(res->start, resource_size(res)); 1213 1213 EXIT_KFREE: 1214 1214 platform_set_drvdata(pdev, NULL); 1215 1215 kfree(data); ··· 1228 1228 kfree(data); 1229 1229 1230 1230 res = platform_get_resource(pdev, IORESOURCE_IO, 0); 1231 - release_region(res->start, res->end - res->start + 1); 1231 + release_region(res->start, resource_size(res)); 1232 1232 1233 1233 return 0; 1234 1234 }