linux-stable/drivers/rpmsg
Matthias Kaehlcke daf9ac79e7 rpmsg: char: Fix race between the release of rpmsg_eptdev and cdev
commit 7a534ae89e upstream.

struct rpmsg_eptdev contains a struct cdev. The current code frees
the rpmsg_eptdev struct in rpmsg_eptdev_destroy(), but the cdev is
a managed object, therefore its release is not predictable and the
rpmsg_eptdev could be freed before the cdev is entirely released.

The cdev_device_add/del() API was created to address this issue
(see commit '233ed09d7fda ("chardev: add helper function to register
char devs with a struct device")'), use it instead of cdev add/del().

Fixes: c0cdc19f84 ("rpmsg: Driver for user space endpoint interface")
Suggested-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20220110104706.v6.2.Idde68b05b88d4a2e6e54766c653f3a6d9e419ce6@changeid
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-02-01 17:27:07 +01:00
..
Kconfig rpmsg: Turn name service into a stand alone driver 2020-11-24 10:11:59 -06:00
Makefile rpmsg: Turn name service into a stand alone driver 2020-11-24 10:11:59 -06:00
mtk_rpmsg.c rpmsg: Avoid double-free in mtk_rpmsg_register_device 2020-09-15 03:43:24 +00:00
qcom_glink_native.c rpmsg: qcom_glink_native: fix error return code of qcom_glink_rx_data() 2021-04-09 11:08:42 -05:00
qcom_glink_native.h rpmsg: glink: Switch to SPDX license identifier 2018-06-03 17:37:15 -07:00
qcom_glink_rpm.c rpmsg: glink: Switch to SPDX license identifier 2018-06-03 17:37:15 -07:00
qcom_glink_smem.c rpmsg: glink: Set tail pointer to 0 at end of FIFO 2019-10-11 11:34:12 -07:00
qcom_glink_ssr.c rpmsg: glink: add include of header file 2021-01-05 22:22:40 -06:00
qcom_smd.c rpmsg: char: Use rpmsg_sendto to specify the message destination address 2021-03-17 14:16:36 -05:00
rpmsg_char.c rpmsg: char: Fix race between the release of rpmsg_eptdev and cdev 2022-02-01 17:27:07 +01:00
rpmsg_core.c rpmsg: core: Clean up resources on announce_create failure. 2022-01-27 11:05:06 +01:00
rpmsg_internal.h rpmsg: Make rpmsg_{register|unregister}_device() public 2020-11-24 10:11:52 -06:00
rpmsg_ns.c rpmsg: Turn name service into a stand alone driver 2020-11-24 10:11:59 -06:00
virtio_rpmsg_bus.c rpmsg: virtio: Register the rpmsg_char device 2021-03-17 14:16:47 -05:00