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

connector: Fix proc_event_num_listeners count not cleared

When we register a cn_proc listening event, the proc_event_num_listener
variable will be incremented by one, but if PROC_CN_MCAST_IGNORE is
not called, the count will not decrease.
This will cause the proc_*_connector function to take the wrong path.
It will reappear when the forkstat tool exits via ctrl + c.
We solve this problem by determining whether
there are still listeners to clear proc_event_num_listener.

Signed-off-by: wangkeqi <wangkeqiwang@didiglobal.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

wangkeqi and committed by
David S. Miller
c46bfba1 059d37b7

+3 -2
+3 -2
drivers/connector/cn_proc.c
··· 108 108 filter_data[1] = 0; 109 109 } 110 110 111 - cn_netlink_send_mult(msg, msg->len, 0, CN_IDX_PROC, GFP_NOWAIT, 112 - cn_filter, (void *)filter_data); 111 + if (cn_netlink_send_mult(msg, msg->len, 0, CN_IDX_PROC, GFP_NOWAIT, 112 + cn_filter, (void *)filter_data) == -ESRCH) 113 + atomic_set(&proc_event_num_listeners, 0); 113 114 114 115 local_unlock(&local_event.lock); 115 116 }