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

rpmsg: add THIS_MODULE to rpmsg_driver in rpmsg core

Add register_rpmsg_driver helper macro that adds THIS_MODULE to
rpmsg_driver for the registering driver. We rename and modify
the existing register_rpmsg_driver to enable this.

Signed-off-by: Andrew F. Davis <afd@ti.com>
Acked-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>

authored by

Andrew F. Davis and committed by
Bjorn Andersson
bc3c57c1 9735a227

+10 -4
+5 -3
drivers/rpmsg/virtio_rpmsg_bus.c
··· 436 436 }; 437 437 438 438 /** 439 - * register_rpmsg_driver() - register an rpmsg driver with the rpmsg bus 439 + * __register_rpmsg_driver() - register an rpmsg driver with the rpmsg bus 440 440 * @rpdrv: pointer to a struct rpmsg_driver 441 + * @owner: owning module/driver 441 442 * 442 443 * Returns 0 on success, and an appropriate error value on failure. 443 444 */ 444 - int register_rpmsg_driver(struct rpmsg_driver *rpdrv) 445 + int __register_rpmsg_driver(struct rpmsg_driver *rpdrv, struct module *owner) 445 446 { 446 447 rpdrv->drv.bus = &rpmsg_bus; 448 + rpdrv->drv.owner = owner; 447 449 return driver_register(&rpdrv->drv); 448 450 } 449 - EXPORT_SYMBOL(register_rpmsg_driver); 451 + EXPORT_SYMBOL(__register_rpmsg_driver); 450 452 451 453 /** 452 454 * unregister_rpmsg_driver() - unregister an rpmsg driver from the rpmsg bus
+5 -1
include/linux/rpmsg.h
··· 169 169 170 170 int register_rpmsg_device(struct rpmsg_channel *dev); 171 171 void unregister_rpmsg_device(struct rpmsg_channel *dev); 172 - int register_rpmsg_driver(struct rpmsg_driver *drv); 172 + int __register_rpmsg_driver(struct rpmsg_driver *drv, struct module *owner); 173 173 void unregister_rpmsg_driver(struct rpmsg_driver *drv); 174 174 void rpmsg_destroy_ept(struct rpmsg_endpoint *); 175 175 struct rpmsg_endpoint *rpmsg_create_ept(struct rpmsg_channel *, 176 176 rpmsg_rx_cb_t cb, void *priv, u32 addr); 177 177 int 178 178 rpmsg_send_offchannel_raw(struct rpmsg_channel *, u32, u32, void *, int, bool); 179 + 180 + /* use a macro to avoid include chaining to get THIS_MODULE */ 181 + #define register_rpmsg_driver(drv) \ 182 + __register_rpmsg_driver(drv, THIS_MODULE) 179 183 180 184 /** 181 185 * rpmsg_send() - send a message across to the remote processor