Re: [PATCH can-next v2 2/3] af_can: store socket pointers in struct netns_can

Oliver Hartkopp <[email protected]>
Newsgroups org.kernel.vger.linux-can
Message-ID <[email protected]>

On 06.08.26 16:16, Marc Kleine-Budde wrote:
> On 06.08.2026 15:14:14, Filippo Storniolo wrote:
>> AF_CAN sockets need to be stored in the netns_can structure
>> in order to be retrieved by the CAN diagnostic module when
>> a netlink request message is issued by the userspace.
>>
>> On socket creation (`can_create()`), add the pointer to the
>> new socket to `netns_can::sk_list`. During socket release
>> (`isotp_release()`, `raw_release()`, `j1939_release()`,
>> `bcm_release()`), remove the corresponding pointer from
>> this list.
>>
>> Since this is a prerequisite of the CAN diagnostic module,
>> deletes and insert operations are conditioned by
>> IS_ENABLED(CONFIG_CAN_DIAG).
>>
>> Signed-off-by: Filippo Storniolo <[email protected]>
>> ---
>>   include/linux/can/core.h | 11 +++++++++++
>>   include/net/netns/can.h  |  6 ++++++
>>   net/can/af_can.c         | 50 ++++++++++++++++++++++++++++++++++++++++++++++++
>>   net/can/bcm.c            |  2 ++
>>   net/can/isotp.c          |  2 ++
>>   net/can/j1939/socket.c   |  2 ++
>>   net/can/raw.c            |  2 ++
>>   7 files changed, 75 insertions(+)
>>
>> diff --git a/include/linux/can/core.h b/include/linux/can/core.h
>> index 3287232e3cad..5132f5c89b7c 100644
>> --- a/include/linux/can/core.h
>> +++ b/include/linux/can/core.h
>> @@ -61,4 +61,15 @@ extern int can_send(struct sk_buff *skb, int loop);
>>   void can_set_skb_uid(struct sk_buff *skb);
>>   void can_sock_destruct(struct sock *sk);
>>
>> +/* function prototypes for the CAN diag module */
>> +#if IS_ENABLED(CONFIG_CAN_DIAG)
>> +void lock_can_diag_mutex(struct net *net);
>> +void unlock_can_diag_mutex(struct net *net);
>> +void can_add_sock_sklist(struct sock *sk);
>> +void can_remove_sock_sklist(struct sock *sk);
>> +#else
>> +#define can_add_sock_sklist(sk)
>> +#define can_remove_sock_sklist(sk)
> 
> Please add static inline functions for these.

AFAIK "inline" is not wanted anymore and checkpatch complains about it.

Best regards,
Oliver

> 
>> +#endif
>> +
>>   #endif /* !_CAN_CORE_H */
>> diff --git a/include/net/netns/can.h b/include/net/netns/can.h
>> index 48b79f7e6236..bcafff5e6669 100644
>> --- a/include/net/netns/can.h
>> +++ b/include/net/netns/can.h
>> @@ -36,6 +36,12 @@ struct netns_can {
>>
>>   	/* CAN GW per-net gateway jobs */
>>   	struct hlist_head cgw_list;
>> +
>> +#if IS_ENABLED(CONFIG_CAN_DIAG)
>> +	/* CAN diag support */
>> +	struct mutex		sklist_lock;
>> +	struct hlist_head	sklist;
> 
> nitpick:
> Please indent with only 1 space as in the rest of this struct.
> 
> regards,
> Marc
> 
> --
> Pengutronix e.K.                 | Marc Kleine-Budde          |
> Embedded Linux                   | https://www.pengutronix.de |
> Vertretung Nürnberg              | Phone: +49-5121-206917-129 |
> Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-9   |
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.