]> git.baikalelectronics.ru Git - kernel.git/commit
can: gs_usb: change active_channels's type from atomic_t to u8
authorVincent Mailhol <mailhol.vincent@wanadoo.fr>
Mon, 14 Feb 2022 23:48:14 +0000 (08:48 +0900)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Fri, 25 Feb 2022 08:14:34 +0000 (09:14 +0100)
commite78e8ecf162b2cfe7ed43531e7756e3ecf0745f2
tree0bb9fc91d54ed5d977dd4f62b19488550110aaa1
parent237a82db249f8a58bb97d43a30615f63384a55dd
can: gs_usb: change active_channels's type from atomic_t to u8

The driver uses an atomic_t variable: gs_usb:active_channels to keep
track of the number of opened channels in order to only allocate
memory for the URBs when this count changes from zero to one.

However, the driver does not decrement the counter when an error
occurs in gs_can_open(). This issue is fixed by changing the type from
atomic_t to u8 and by simplifying the logic accordingly.

It is safe to use an u8 here because the network stack big kernel lock
(a.k.a. rtnl_mutex) is being hold. For details, please refer to [1].

[1] https://lore.kernel.org/linux-can/CAMZ6Rq+sHpiw34ijPsmp7vbUpDtJwvVtdV7CvRZJsLixjAFfrg@mail.gmail.com/T/#t

Fixes: f619109f865f ("can: gs_usb: Added support for the GS_USB CAN devices")
Link: https://lore.kernel.org/all/20220214234814.1321599-1-mailhol.vincent@wanadoo.fr
Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/usb/gs_usb.c