.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * MEN Chameleon Bus. |
---|
3 | 4 | * |
---|
4 | 5 | * Copyright (C) 2013 MEN Mikroelektronik GmbH (www.men.de) |
---|
5 | 6 | * Author: Johannes Thumshirn <johannes.thumshirn@men.de> |
---|
6 | | - * |
---|
7 | | - * This program is free software; you can redistribute it and/or modify it |
---|
8 | | - * under the terms of the GNU General Public License as published by the Free |
---|
9 | | - * Software Foundation; version 2 of the License. |
---|
10 | 7 | */ |
---|
11 | 8 | #include <linux/kernel.h> |
---|
12 | 9 | #include <linux/module.h> |
---|
.. | .. |
---|
74 | 71 | |
---|
75 | 72 | get_device(dev); |
---|
76 | 73 | ret = mdrv->probe(mdev, found_id); |
---|
77 | | - if (ret) |
---|
| 74 | + if (ret) { |
---|
78 | 75 | module_put(carrier_mod); |
---|
| 76 | + put_device(dev); |
---|
| 77 | + } |
---|
79 | 78 | |
---|
80 | 79 | return ret; |
---|
81 | 80 | } |
---|
.. | .. |
---|
194 | 193 | |
---|
195 | 194 | return driver_register(&drv->driver); |
---|
196 | 195 | } |
---|
197 | | -EXPORT_SYMBOL_GPL(__mcb_register_driver); |
---|
| 196 | +EXPORT_SYMBOL_NS_GPL(__mcb_register_driver, MCB); |
---|
198 | 197 | |
---|
199 | 198 | /** |
---|
200 | 199 | * mcb_unregister_driver() - Unregister a @mcb_driver from the system |
---|
.. | .. |
---|
206 | 205 | { |
---|
207 | 206 | driver_unregister(&drv->driver); |
---|
208 | 207 | } |
---|
209 | | -EXPORT_SYMBOL_GPL(mcb_unregister_driver); |
---|
| 208 | +EXPORT_SYMBOL_NS_GPL(mcb_unregister_driver, MCB); |
---|
210 | 209 | |
---|
211 | 210 | static void mcb_release_dev(struct device *dev) |
---|
212 | 211 | { |
---|
.. | .. |
---|
252 | 251 | |
---|
253 | 252 | return ret; |
---|
254 | 253 | } |
---|
255 | | -EXPORT_SYMBOL_GPL(mcb_device_register); |
---|
| 254 | +EXPORT_SYMBOL_NS_GPL(mcb_device_register, MCB); |
---|
256 | 255 | |
---|
257 | 256 | static void mcb_free_bus(struct device *dev) |
---|
258 | 257 | { |
---|
.. | .. |
---|
304 | 303 | put_device(&bus->dev); |
---|
305 | 304 | return ERR_PTR(rc); |
---|
306 | 305 | } |
---|
307 | | -EXPORT_SYMBOL_GPL(mcb_alloc_bus); |
---|
| 306 | +EXPORT_SYMBOL_NS_GPL(mcb_alloc_bus, MCB); |
---|
308 | 307 | |
---|
309 | 308 | static int __mcb_devices_unregister(struct device *dev, void *data) |
---|
310 | 309 | { |
---|
.. | .. |
---|
326 | 325 | { |
---|
327 | 326 | mcb_devices_unregister(bus); |
---|
328 | 327 | } |
---|
329 | | -EXPORT_SYMBOL_GPL(mcb_release_bus); |
---|
| 328 | +EXPORT_SYMBOL_NS_GPL(mcb_release_bus, MCB); |
---|
330 | 329 | |
---|
331 | 330 | /** |
---|
332 | 331 | * mcb_bus_put() - Increment refcnt |
---|
.. | .. |
---|
341 | 340 | |
---|
342 | 341 | return bus; |
---|
343 | 342 | } |
---|
344 | | -EXPORT_SYMBOL_GPL(mcb_bus_get); |
---|
| 343 | +EXPORT_SYMBOL_NS_GPL(mcb_bus_get, MCB); |
---|
345 | 344 | |
---|
346 | 345 | /** |
---|
347 | 346 | * mcb_bus_put() - Decrement refcnt |
---|
.. | .. |
---|
354 | 353 | if (bus) |
---|
355 | 354 | put_device(&bus->dev); |
---|
356 | 355 | } |
---|
357 | | -EXPORT_SYMBOL_GPL(mcb_bus_put); |
---|
| 356 | +EXPORT_SYMBOL_NS_GPL(mcb_bus_put, MCB); |
---|
358 | 357 | |
---|
359 | 358 | /** |
---|
360 | 359 | * mcb_alloc_dev() - Allocate a device |
---|
.. | .. |
---|
374 | 373 | |
---|
375 | 374 | return dev; |
---|
376 | 375 | } |
---|
377 | | -EXPORT_SYMBOL_GPL(mcb_alloc_dev); |
---|
| 376 | +EXPORT_SYMBOL_NS_GPL(mcb_alloc_dev, MCB); |
---|
378 | 377 | |
---|
379 | 378 | /** |
---|
380 | 379 | * mcb_free_dev() - Free @mcb_device |
---|
.. | .. |
---|
386 | 385 | { |
---|
387 | 386 | kfree(dev); |
---|
388 | 387 | } |
---|
389 | | -EXPORT_SYMBOL_GPL(mcb_free_dev); |
---|
| 388 | +EXPORT_SYMBOL_NS_GPL(mcb_free_dev, MCB); |
---|
390 | 389 | |
---|
391 | 390 | static int __mcb_bus_add_devices(struct device *dev, void *data) |
---|
392 | 391 | { |
---|
.. | .. |
---|
415 | 414 | { |
---|
416 | 415 | bus_for_each_dev(&mcb_bus_type, NULL, NULL, __mcb_bus_add_devices); |
---|
417 | 416 | } |
---|
418 | | -EXPORT_SYMBOL_GPL(mcb_bus_add_devices); |
---|
| 417 | +EXPORT_SYMBOL_NS_GPL(mcb_bus_add_devices, MCB); |
---|
419 | 418 | |
---|
420 | 419 | /** |
---|
421 | 420 | * mcb_get_resource() - get a resource for a mcb device |
---|
.. | .. |
---|
431 | 430 | else |
---|
432 | 431 | return NULL; |
---|
433 | 432 | } |
---|
434 | | -EXPORT_SYMBOL_GPL(mcb_get_resource); |
---|
| 433 | +EXPORT_SYMBOL_NS_GPL(mcb_get_resource, MCB); |
---|
435 | 434 | |
---|
436 | 435 | /** |
---|
437 | 436 | * mcb_request_mem() - Request memory |
---|
.. | .. |
---|
457 | 456 | |
---|
458 | 457 | return mem; |
---|
459 | 458 | } |
---|
460 | | -EXPORT_SYMBOL_GPL(mcb_request_mem); |
---|
| 459 | +EXPORT_SYMBOL_NS_GPL(mcb_request_mem, MCB); |
---|
461 | 460 | |
---|
462 | 461 | /** |
---|
463 | 462 | * mcb_release_mem() - Release memory requested by device |
---|
.. | .. |
---|
472 | 471 | size = resource_size(mem); |
---|
473 | 472 | release_mem_region(mem->start, size); |
---|
474 | 473 | } |
---|
475 | | -EXPORT_SYMBOL_GPL(mcb_release_mem); |
---|
| 474 | +EXPORT_SYMBOL_NS_GPL(mcb_release_mem, MCB); |
---|
476 | 475 | |
---|
477 | 476 | static int __mcb_get_irq(struct mcb_device *dev) |
---|
478 | 477 | { |
---|
.. | .. |
---|
498 | 497 | |
---|
499 | 498 | return __mcb_get_irq(dev); |
---|
500 | 499 | } |
---|
501 | | -EXPORT_SYMBOL_GPL(mcb_get_irq); |
---|
| 500 | +EXPORT_SYMBOL_NS_GPL(mcb_get_irq, MCB); |
---|
502 | 501 | |
---|
503 | 502 | static int mcb_init(void) |
---|
504 | 503 | { |
---|