diff options
author | Julia Lawall <julia@diku.dk> | 2008-04-29 03:59:30 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-29 11:06:04 -0400 |
commit | 3a8ca95e9d62980fd3b41165ec05032c63ce21da (patch) | |
tree | 885545c795b9bc2c8a542dd78455c178357c7a6c /drivers/misc | |
parent | 95d8c365b2df2adb904963333a93b15414403ed1 (diff) |
drivers/misc: elide a non-zero test on a result that is never 0
The function thermal_cooling_device_register always returns either a valid
pointer or a value made with ERR_PTR, so a test for non-zero on the result
will always succeed.
The problem was found using the following semantic match.
(http://www.emn.fr/x-info/coccinelle/)
//<smpl>
@a@
expression E, E1;
statement S,S1;
position p;
@@
E = thermal_cooling_device_register(...)
... when != E = E1
if@p (E) S else S1
@n@
position a.p;
expression E,E1;
statement S,S1;
@@
E = NULL
... when != E = E1
if@p (E) S else S1
@depends on !n@
expression E;
statement S,S1;
position a.p;
@@
* if@p (E)
S else S1
//</smpl>
Signed-off-by: Julia Lawall <julia@diku.dk>
Cc: Thomas Sujith <sujith.thomas@intel.com>
Cc: Len Brown <len.brown@intel.com>
Cc: Zhang Rui <rui.zhang@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/misc')
-rw-r--r-- | drivers/misc/intel_menlow.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/drivers/misc/intel_menlow.c b/drivers/misc/intel_menlow.c index 0c0bb3093e07..80a136352408 100644 --- a/drivers/misc/intel_menlow.c +++ b/drivers/misc/intel_menlow.c | |||
@@ -175,19 +175,17 @@ static int intel_menlow_memory_add(struct acpi_device *device) | |||
175 | goto end; | 175 | goto end; |
176 | } | 176 | } |
177 | 177 | ||
178 | if (cdev) { | 178 | acpi_driver_data(device) = cdev; |
179 | acpi_driver_data(device) = cdev; | 179 | result = sysfs_create_link(&device->dev.kobj, |
180 | result = sysfs_create_link(&device->dev.kobj, | 180 | &cdev->device.kobj, "thermal_cooling"); |
181 | &cdev->device.kobj, "thermal_cooling"); | 181 | if (result) |
182 | if (result) | 182 | goto unregister; |
183 | goto unregister; | 183 | |
184 | 184 | result = sysfs_create_link(&cdev->device.kobj, | |
185 | result = sysfs_create_link(&cdev->device.kobj, | 185 | &device->dev.kobj, "device"); |
186 | &device->dev.kobj, "device"); | 186 | if (result) { |
187 | if (result) { | 187 | sysfs_remove_link(&device->dev.kobj, "thermal_cooling"); |
188 | sysfs_remove_link(&device->dev.kobj, "thermal_cooling"); | 188 | goto unregister; |
189 | goto unregister; | ||
190 | } | ||
191 | } | 189 | } |
192 | 190 | ||
193 | end: | 191 | end: |