diff options
author | Davide Caratti <dcaratti@redhat.com> | 2025-03-14 12:39:49 +0100 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2025-03-14 13:27:33 +0100 |
commit | 6bffe88452dbe284747442f10a7ac8249d6495d7 (patch) | |
tree | b5f16442957fe1ae7a3048cbfa3cf06f087c28c6 /net/can/raw.c | |
parent | 958ee3d715773d88e5d85c36311ef458d6b352a2 (diff) |
can: add protocol counter for AF_CAN sockets
The third column in the output of the following command:
| # grep CAN /proc/net/protocols
is systematically '0': use sock_prot_inuse_add() to account for the number
of sockets for each protocol on top of AF_CAN family.
Signed-off-by: Davide Caratti <dcaratti@redhat.com>
Link: https://patch.msgid.link/9db5d0e6c11b232ad895885616f1258882a32f61.1741952160.git.dcaratti@redhat.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'net/can/raw.c')
-rw-r--r-- | net/can/raw.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/can/raw.c b/net/can/raw.c index 9b1d5f036f57..020f21430b1d 100644 --- a/net/can/raw.c +++ b/net/can/raw.c @@ -397,11 +397,13 @@ static int raw_release(struct socket *sock) { struct sock *sk = sock->sk; struct raw_sock *ro; + struct net *net; if (!sk) return 0; ro = raw_sk(sk); + net = sock_net(sk); spin_lock(&raw_notifier_lock); while (raw_busy_notifier == ro) { @@ -421,7 +423,7 @@ static int raw_release(struct socket *sock) raw_disable_allfilters(dev_net(ro->dev), ro->dev, sk); netdev_put(ro->dev, &ro->dev_tracker); } else { - raw_disable_allfilters(sock_net(sk), NULL, sk); + raw_disable_allfilters(net, NULL, sk); } } @@ -440,6 +442,7 @@ static int raw_release(struct socket *sock) release_sock(sk); rtnl_unlock(); + sock_prot_inuse_add(net, sk->sk_prot, -1); sock_put(sk); return 0; |