Add missing patch that touched many files, including thinkpad-acpi and
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / releases / upstream / 2.6.28-rc1 / 0001-ACPI-catch-calls-of-acpi_driver_data-on-pointer-of.patch
blob628dbb6e2db032804ced12f7deacfb2c3fa8f4f7
1 From db89b4f0dbab837d0f3de2c3e9427a8d5393afa3 Mon Sep 17 00:00:00 2001
2 From: Pavel Machek <pavel@suse.cz>
3 Date: Mon, 22 Sep 2008 14:37:34 -0700
4 Subject: [PATCH] ACPI: catch calls of acpi_driver_data on pointer of wrong type
6 Catch attempts to use of acpi_driver_data on pointers of wrong type.
8 akpm: rewritten to use proper C typechecking and remove the
9 "function"-used-as-lvalue thing.
11 Signed-off-by: Pavel Machek <pavel@suse.cz>
12 Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
13 Signed-off-by: Len Brown <len.brown@intel.com>
14 ---
15 drivers/acpi/ac.c | 2 +-
16 drivers/acpi/acpi_memhotplug.c | 2 +-
17 drivers/acpi/asus_acpi.c | 2 +-
18 drivers/acpi/battery.c | 2 +-
19 drivers/acpi/button.c | 2 +-
20 drivers/acpi/container.c | 2 +-
21 drivers/acpi/ec.c | 4 ++--
22 drivers/acpi/fan.c | 2 +-
23 drivers/acpi/pci_link.c | 2 +-
24 drivers/acpi/pci_root.c | 2 +-
25 drivers/acpi/power.c | 4 ++--
26 drivers/acpi/processor_core.c | 2 +-
27 drivers/acpi/sbs.c | 2 +-
28 drivers/acpi/sbshc.c | 4 ++--
29 drivers/acpi/scan.c | 4 ++--
30 drivers/acpi/thermal.c | 2 +-
31 drivers/acpi/video.c | 6 +++---
32 drivers/misc/asus-laptop.c | 2 +-
33 drivers/misc/eeepc-laptop.c | 2 +-
34 drivers/misc/fujitsu-laptop.c | 4 ++--
35 drivers/misc/intel_menlow.c | 2 +-
36 drivers/misc/thinkpad_acpi.c | 2 +-
37 include/acpi/acpi_bus.h | 6 +++++-
38 23 files changed, 34 insertions(+), 30 deletions(-)
40 diff --git a/drivers/acpi/ac.c b/drivers/acpi/ac.c
41 index 831883b..8b6a84a 100644
42 --- a/drivers/acpi/ac.c
43 +++ b/drivers/acpi/ac.c
44 @@ -269,7 +269,7 @@ static int acpi_ac_add(struct acpi_device *device)
45 ac->device = device;
46 strcpy(acpi_device_name(device), ACPI_AC_DEVICE_NAME);
47 strcpy(acpi_device_class(device), ACPI_AC_CLASS);
48 - acpi_driver_data(device) = ac;
49 + device->driver_data = ac;
51 result = acpi_ac_get_state(ac);
52 if (result)
53 diff --git a/drivers/acpi/acpi_memhotplug.c b/drivers/acpi/acpi_memhotplug.c
54 index 5f1127a..afd955f 100644
55 --- a/drivers/acpi/acpi_memhotplug.c
56 +++ b/drivers/acpi/acpi_memhotplug.c
57 @@ -403,7 +403,7 @@ static int acpi_memory_device_add(struct acpi_device *device)
58 mem_device->device = device;
59 sprintf(acpi_device_name(device), "%s", ACPI_MEMORY_DEVICE_NAME);
60 sprintf(acpi_device_class(device), "%s", ACPI_MEMORY_DEVICE_CLASS);
61 - acpi_driver_data(device) = mem_device;
62 + device->driver_data = mem_device;
64 /* Get the range from the _CRS */
65 result = acpi_memory_get_device_resources(mem_device);
66 diff --git a/drivers/acpi/asus_acpi.c b/drivers/acpi/asus_acpi.c
67 index d3d0886..91571fc 100644
68 --- a/drivers/acpi/asus_acpi.c
69 +++ b/drivers/acpi/asus_acpi.c
70 @@ -1321,7 +1321,7 @@ static int asus_hotk_add(struct acpi_device *device)
71 hotk->handle = device->handle;
72 strcpy(acpi_device_name(device), ACPI_HOTK_DEVICE_NAME);
73 strcpy(acpi_device_class(device), ACPI_HOTK_CLASS);
74 - acpi_driver_data(device) = hotk;
75 + device->driver_data = hotk;
76 hotk->device = device;
78 result = asus_hotk_check();
79 diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
80 index b1c723f..de80469 100644
81 --- a/drivers/acpi/battery.c
82 +++ b/drivers/acpi/battery.c
83 @@ -804,7 +804,7 @@ static int acpi_battery_add(struct acpi_device *device)
84 battery->device = device;
85 strcpy(acpi_device_name(device), ACPI_BATTERY_DEVICE_NAME);
86 strcpy(acpi_device_class(device), ACPI_BATTERY_CLASS);
87 - acpi_driver_data(device) = battery;
88 + device->driver_data = battery;
89 mutex_init(&battery->lock);
90 acpi_battery_update(battery);
91 #ifdef CONFIG_ACPI_PROCFS_POWER
92 diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c
93 index 1dfec41..e22033e 100644
94 --- a/drivers/acpi/button.c
95 +++ b/drivers/acpi/button.c
96 @@ -384,7 +384,7 @@ static int acpi_button_add(struct acpi_device *device)
97 return -ENOMEM;
99 button->device = device;
100 - acpi_driver_data(device) = button;
101 + device->driver_data = button;
103 button->input = input = input_allocate_device();
104 if (!input) {
105 diff --git a/drivers/acpi/container.c b/drivers/acpi/container.c
106 index 3c25ec7..03ea847 100644
107 --- a/drivers/acpi/container.c
108 +++ b/drivers/acpi/container.c
109 @@ -108,7 +108,7 @@ static int acpi_container_add(struct acpi_device *device)
110 container->handle = device->handle;
111 strcpy(acpi_device_name(device), ACPI_CONTAINER_DEVICE_NAME);
112 strcpy(acpi_device_class(device), ACPI_CONTAINER_CLASS);
113 - acpi_driver_data(device) = container;
114 + device->driver_data = container;
116 ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device <%s> bid <%s>\n",
117 acpi_device_name(device), acpi_device_bid(device)));
118 diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
119 index 13593f9..5741d99 100644
120 --- a/drivers/acpi/ec.c
121 +++ b/drivers/acpi/ec.c
122 @@ -788,7 +788,7 @@ static int acpi_ec_add(struct acpi_device *device)
124 if (!first_ec)
125 first_ec = ec;
126 - acpi_driver_data(device) = ec;
127 + device->driver_data = ec;
128 acpi_ec_add_fs(device);
129 pr_info(PREFIX "GPE = 0x%lx, I/O: command/status = 0x%lx, data = 0x%lx\n",
130 ec->gpe, ec->command_addr, ec->data_addr);
131 @@ -813,7 +813,7 @@ static int acpi_ec_remove(struct acpi_device *device, int type)
133 mutex_unlock(&ec->lock);
134 acpi_ec_remove_fs(device);
135 - acpi_driver_data(device) = NULL;
136 + device->driver_data = NULL;
137 if (ec == first_ec)
138 first_ec = NULL;
139 kfree(ec);
140 diff --git a/drivers/acpi/fan.c b/drivers/acpi/fan.c
141 index 2655bc1..e603e40 100644
142 --- a/drivers/acpi/fan.c
143 +++ b/drivers/acpi/fan.c
144 @@ -265,7 +265,7 @@ static int acpi_fan_add(struct acpi_device *device)
146 dev_info(&device->dev, "registered as cooling_device%d\n", cdev->id);
148 - acpi_driver_data(device) = cdev;
149 + device->driver_data = cdev;
150 result = sysfs_create_link(&device->dev.kobj,
151 &cdev->device.kobj,
152 "thermal_cooling");
153 diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
154 index cf47805..54cd77a 100644
155 --- a/drivers/acpi/pci_link.c
156 +++ b/drivers/acpi/pci_link.c
157 @@ -737,7 +737,7 @@ static int acpi_pci_link_add(struct acpi_device *device)
158 link->device = device;
159 strcpy(acpi_device_name(device), ACPI_PCI_LINK_DEVICE_NAME);
160 strcpy(acpi_device_class(device), ACPI_PCI_LINK_CLASS);
161 - acpi_driver_data(device) = link;
162 + device->driver_data = link;
164 mutex_lock(&acpi_link_lock);
165 result = acpi_pci_link_get_possible(link);
166 diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
167 index c3fed31..add1a19 100644
168 --- a/drivers/acpi/pci_root.c
169 +++ b/drivers/acpi/pci_root.c
170 @@ -206,7 +206,7 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device)
171 root->device = device;
172 strcpy(acpi_device_name(device), ACPI_PCI_ROOT_DEVICE_NAME);
173 strcpy(acpi_device_class(device), ACPI_PCI_ROOT_CLASS);
174 - acpi_driver_data(device) = root;
175 + device->driver_data = root;
177 device->ops.bind = acpi_pci_bind;
179 diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c
180 index 4ab21cb..1bef942 100644
181 --- a/drivers/acpi/power.c
182 +++ b/drivers/acpi/power.c
183 @@ -657,7 +657,7 @@ static int acpi_power_add(struct acpi_device *device)
184 strcpy(resource->name, device->pnp.bus_id);
185 strcpy(acpi_device_name(device), ACPI_POWER_DEVICE_NAME);
186 strcpy(acpi_device_class(device), ACPI_POWER_CLASS);
187 - acpi_driver_data(device) = resource;
188 + device->driver_data = resource;
190 /* Evalute the object to get the system level and resource order. */
191 status = acpi_evaluate_object(device->handle, NULL, NULL, &buffer);
192 @@ -733,7 +733,7 @@ static int acpi_power_resume(struct acpi_device *device)
193 if (!device || !acpi_driver_data(device))
194 return -EINVAL;
196 - resource = (struct acpi_power_resource *)acpi_driver_data(device);
197 + resource = acpi_driver_data(device);
199 result = acpi_power_get_state(resource, &state);
200 if (result)
201 diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c
202 index ee68ac5..2894616 100644
203 --- a/drivers/acpi/processor_core.c
204 +++ b/drivers/acpi/processor_core.c
205 @@ -818,7 +818,7 @@ static int acpi_processor_add(struct acpi_device *device)
206 pr->handle = device->handle;
207 strcpy(acpi_device_name(device), ACPI_PROCESSOR_DEVICE_NAME);
208 strcpy(acpi_device_class(device), ACPI_PROCESSOR_CLASS);
209 - acpi_driver_data(device) = pr;
210 + device->driver_data = pr;
212 return 0;
214 diff --git a/drivers/acpi/sbs.c b/drivers/acpi/sbs.c
215 index 10a3651..d003325 100644
216 --- a/drivers/acpi/sbs.c
217 +++ b/drivers/acpi/sbs.c
218 @@ -931,7 +931,7 @@ static int acpi_sbs_add(struct acpi_device *device)
219 sbs->device = device;
220 strcpy(acpi_device_name(device), ACPI_SBS_DEVICE_NAME);
221 strcpy(acpi_device_class(device), ACPI_SBS_CLASS);
222 - acpi_driver_data(device) = sbs;
223 + device->driver_data = sbs;
225 result = acpi_charger_add(sbs);
226 if (result)
227 diff --git a/drivers/acpi/sbshc.c b/drivers/acpi/sbshc.c
228 index a4e3767..001d914 100644
229 --- a/drivers/acpi/sbshc.c
230 +++ b/drivers/acpi/sbshc.c
231 @@ -282,7 +282,7 @@ static int acpi_smbus_hc_add(struct acpi_device *device)
232 hc->ec = acpi_driver_data(device->parent);
233 hc->offset = (val >> 8) & 0xff;
234 hc->query_bit = val & 0xff;
235 - acpi_driver_data(device) = hc;
236 + device->driver_data = hc;
238 acpi_ec_add_query_handler(hc->ec, hc->query_bit, NULL, smbus_alarm, hc);
239 printk(KERN_INFO PREFIX "SBS HC: EC = 0x%p, offset = 0x%0x, query_bit = 0x%0x\n",
240 @@ -303,7 +303,7 @@ static int acpi_smbus_hc_remove(struct acpi_device *device, int type)
241 hc = acpi_driver_data(device);
242 acpi_ec_remove_query_handler(hc->ec, hc->query_bit);
243 kfree(hc);
244 - acpi_driver_data(device) = NULL;
245 + device->driver_data = NULL;
246 return 0;
249 diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
250 index e7b8853..b88536a 100644
251 --- a/drivers/acpi/scan.c
252 +++ b/drivers/acpi/scan.c
253 @@ -384,7 +384,7 @@ static int acpi_device_remove(struct device * dev)
254 acpi_drv->ops.remove(acpi_dev, acpi_dev->removal_type);
256 acpi_dev->driver = NULL;
257 - acpi_driver_data(acpi_dev) = NULL;
258 + acpi_dev->driver_data = NULL;
260 put_device(dev);
261 return 0;
262 @@ -537,7 +537,7 @@ acpi_bus_driver_init(struct acpi_device *device, struct acpi_driver *driver)
263 result = driver->ops.add(device);
264 if (result) {
265 device->driver = NULL;
266 - acpi_driver_data(device) = NULL;
267 + device->driver_data = NULL;
268 return result;
271 diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
272 index 9127036..e052a75 100644
273 --- a/drivers/acpi/thermal.c
274 +++ b/drivers/acpi/thermal.c
275 @@ -1647,7 +1647,7 @@ static int acpi_thermal_add(struct acpi_device *device)
276 strcpy(tz->name, device->pnp.bus_id);
277 strcpy(acpi_device_name(device), ACPI_THERMAL_DEVICE_NAME);
278 strcpy(acpi_device_class(device), ACPI_THERMAL_CLASS);
279 - acpi_driver_data(device) = tz;
280 + device->driver_data = tz;
281 mutex_init(&tz->lock);
284 diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
285 index e8a51a1..85c6554 100644
286 --- a/drivers/acpi/video.c
287 +++ b/drivers/acpi/video.c
288 @@ -1491,7 +1491,7 @@ acpi_video_bus_get_one_device(struct acpi_device *device,
290 strcpy(acpi_device_name(device), ACPI_VIDEO_DEVICE_NAME);
291 strcpy(acpi_device_class(device), ACPI_VIDEO_CLASS);
292 - acpi_driver_data(device) = data;
293 + device->driver_data = data;
295 data->device_id = device_id;
296 data->video = video;
297 @@ -1982,7 +1982,7 @@ static int acpi_video_bus_add(struct acpi_device *device)
298 video->device = device;
299 strcpy(acpi_device_name(device), ACPI_VIDEO_BUS_NAME);
300 strcpy(acpi_device_class(device), ACPI_VIDEO_CLASS);
301 - acpi_driver_data(device) = video;
302 + device->driver_data = video;
304 acpi_video_bus_find_cap(video);
305 error = acpi_video_bus_check(video);
306 @@ -2058,7 +2058,7 @@ static int acpi_video_bus_add(struct acpi_device *device)
307 acpi_video_bus_remove_fs(device);
308 err_free_video:
309 kfree(video);
310 - acpi_driver_data(device) = NULL;
311 + device->driver_data = NULL;
313 return error;
315 diff --git a/drivers/misc/asus-laptop.c b/drivers/misc/asus-laptop.c
316 index 7c6dfd0..de82f2f 100644
317 --- a/drivers/misc/asus-laptop.c
318 +++ b/drivers/misc/asus-laptop.c
319 @@ -996,7 +996,7 @@ static int asus_hotk_add(struct acpi_device *device)
320 hotk->handle = device->handle;
321 strcpy(acpi_device_name(device), ASUS_HOTK_DEVICE_NAME);
322 strcpy(acpi_device_class(device), ASUS_HOTK_CLASS);
323 - acpi_driver_data(device) = hotk;
324 + device->driver_data = hotk;
325 hotk->device = device;
327 result = asus_hotk_check();
328 diff --git a/drivers/misc/eeepc-laptop.c b/drivers/misc/eeepc-laptop.c
329 index 1ee8501..c124705 100644
330 --- a/drivers/misc/eeepc-laptop.c
331 +++ b/drivers/misc/eeepc-laptop.c
332 @@ -411,7 +411,7 @@ static int eeepc_hotk_add(struct acpi_device *device)
333 ehotk->handle = device->handle;
334 strcpy(acpi_device_name(device), EEEPC_HOTK_DEVICE_NAME);
335 strcpy(acpi_device_class(device), EEEPC_HOTK_CLASS);
336 - acpi_driver_data(device) = ehotk;
337 + device->driver_data = ehotk;
338 ehotk->device = device;
339 result = eeepc_hotk_check();
340 if (result)
341 diff --git a/drivers/misc/fujitsu-laptop.c b/drivers/misc/fujitsu-laptop.c
342 index 3e56203..7b69cfb 100644
343 --- a/drivers/misc/fujitsu-laptop.c
344 +++ b/drivers/misc/fujitsu-laptop.c
345 @@ -490,7 +490,7 @@ static int acpi_fujitsu_add(struct acpi_device *device)
346 fujitsu->acpi_handle = device->handle;
347 sprintf(acpi_device_name(device), "%s", ACPI_FUJITSU_DEVICE_NAME);
348 sprintf(acpi_device_class(device), "%s", ACPI_FUJITSU_CLASS);
349 - acpi_driver_data(device) = fujitsu;
350 + device->driver_data = fujitsu;
352 status = acpi_install_notify_handler(device->handle,
353 ACPI_DEVICE_NOTIFY,
354 @@ -703,7 +703,7 @@ static int acpi_fujitsu_hotkey_add(struct acpi_device *device)
355 sprintf(acpi_device_name(device), "%s",
356 ACPI_FUJITSU_HOTKEY_DEVICE_NAME);
357 sprintf(acpi_device_class(device), "%s", ACPI_FUJITSU_CLASS);
358 - acpi_driver_data(device) = fujitsu_hotkey;
359 + device->driver_data = fujitsu_hotkey;
361 status = acpi_install_notify_handler(device->handle,
362 ACPI_DEVICE_NOTIFY,
363 diff --git a/drivers/misc/intel_menlow.c b/drivers/misc/intel_menlow.c
364 index 80a1363..cd3ea7f 100644
365 --- a/drivers/misc/intel_menlow.c
366 +++ b/drivers/misc/intel_menlow.c
367 @@ -175,7 +175,7 @@ static int intel_menlow_memory_add(struct acpi_device *device)
368 goto end;
371 - acpi_driver_data(device) = cdev;
372 + device->driver_data = cdev;
373 result = sysfs_create_link(&device->dev.kobj,
374 &cdev->device.kobj, "thermal_cooling");
375 if (result)
376 diff --git a/drivers/misc/thinkpad_acpi.c b/drivers/misc/thinkpad_acpi.c
377 index 6b93007..62aebaa 100644
378 --- a/drivers/misc/thinkpad_acpi.c
379 +++ b/drivers/misc/thinkpad_acpi.c
380 @@ -543,7 +543,7 @@ static int __init setup_acpi_notify(struct ibm_struct *ibm)
381 return -ENODEV;
384 - acpi_driver_data(ibm->acpi->device) = ibm;
385 + ibm->acpi->device->driver_data = ibm;
386 sprintf(acpi_device_class(ibm->acpi->device), "%s/%s",
387 TPACPI_ACPI_EVENT_PREFIX,
388 ibm->name);
389 diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
390 index a5ac0bc..4768246 100644
391 --- a/include/acpi/acpi_bus.h
392 +++ b/include/acpi/acpi_bus.h
393 @@ -300,7 +300,11 @@ struct acpi_device {
394 enum acpi_bus_removal_type removal_type; /* indicate for different removal type */
397 -#define acpi_driver_data(d) ((d)->driver_data)
398 +static inline void *acpi_driver_data(struct acpi_device *d)
400 + return d->driver_data;
403 #define to_acpi_device(d) container_of(d, struct acpi_device, dev)
404 #define to_acpi_driver(d) container_of(d, struct acpi_driver, drv)
407 1.5.6.5