On Tue, Apr 04, 2023 at 09:52:58AM +0800, Chenyuan Mi wrote: > On error unregister BTPROTO_CMTP to match the registration earlier in > the same code-path. Without this change BTPROTO_HIDP is incorrectly > unregistered. > > This bug does not appear to cause serious security problem. > > The function 'bt_sock_unregister' takes its parameter as an index and > NULLs the corresponding element of 'bt_proto' which is an array of > pointers. When 'bt_proto' dereferences each element, it would check > whether the element is empty or not. Therefore, the problem of null > pointer deference does not occur. > > Found by inspection. > > Fixes: 8c8de589cedd ("Bluetooth: Added /proc/net/cmtp via bt_procfs_init()") > Signed-off-by: Chenyuan Mi <michenyuan@xxxxxxxxxx> Reviewed-by: Simon Horman <simon.horman@xxxxxxxxxxxx> > --- > net/bluetooth/cmtp/sock.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletion(-) > > diff --git a/net/bluetooth/cmtp/sock.c b/net/bluetooth/cmtp/sock.c > index 96d49d9fae96..cf4370055ce2 100644 > --- a/net/bluetooth/cmtp/sock.c > +++ b/net/bluetooth/cmtp/sock.c > @@ -250,7 +250,7 @@ int cmtp_init_sockets(void) > err = bt_procfs_init(&init_net, "cmtp", &cmtp_sk_list, NULL); > if (err < 0) { > BT_ERR("Failed to create CMTP proc file"); > - bt_sock_unregister(BTPROTO_HIDP); > + bt_sock_unregister(BTPROTO_CMTP); > goto error; > } > > -- > 2.25.1 >