* [PATCH v2 net-next 0/8] inet: better const qualifier awareness
@ 2023-03-16 15:31 Eric Dumazet
2023-03-16 15:31 ` [PATCH v2 net-next 1/8] inet: preserve const qualifier in inet_sk() Eric Dumazet
` (9 more replies)
0 siblings, 10 replies; 11+ messages in thread
From: Eric Dumazet @ 2023-03-16 15:31 UTC (permalink / raw)
To: David S . Miller, Jakub Kicinski, Paolo Abeni
Cc: netdev, David Ahern, Simon Horman, eric.dumazet, Eric Dumazet
inet_sk() can be changed to propagate const qualifier,
thanks to container_of_const()
Following patches in this series add more const qualifiers.
Other helpers like tcp_sk(), udp_sk(), raw_sk(), ... will be handled
in following series.
Eric Dumazet (8):
inet: preserve const qualifier in inet_sk()
ipv4: constify ip_mc_sf_allow() socket argument
udp: constify __udp_is_mcast_sock() socket argument
ipv6: constify inet6_mc_check()
udp6: constify __udp_v6_is_mcast_sock() socket argument
ipv6: raw: constify raw_v6_match() socket argument
ipv4: raw: constify raw_v4_match() socket argument
inet_diag: constify raw_lookup() socket argument
include/linux/igmp.h | 2 +-
include/net/addrconf.h | 2 +-
include/net/inet_sock.h | 5 +----
include/net/raw.h | 2 +-
include/net/rawv6.h | 2 +-
include/trace/events/sock.h | 4 ++--
include/trace/events/tcp.h | 2 +-
net/ipv4/igmp.c | 4 ++--
net/ipv4/ip_output.c | 5 +++--
net/ipv4/raw.c | 4 ++--
net/ipv4/raw_diag.c | 2 +-
net/ipv4/udp.c | 4 ++--
net/ipv6/mcast.c | 8 ++++----
net/ipv6/ping.c | 2 +-
net/ipv6/raw.c | 2 +-
net/ipv6/udp.c | 6 +++---
net/mptcp/sockopt.c | 2 +-
security/lsm_audit.c | 4 ++--
18 files changed, 30 insertions(+), 32 deletions(-)
--
2.40.0.rc2.332.ga46443480c-goog
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 net-next 1/8] inet: preserve const qualifier in inet_sk()
2023-03-16 15:31 [PATCH v2 net-next 0/8] inet: better const qualifier awareness Eric Dumazet
@ 2023-03-16 15:31 ` Eric Dumazet
2023-03-16 15:31 ` [PATCH v2 net-next 2/8] ipv4: constify ip_mc_sf_allow() socket argument Eric Dumazet
` (8 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2023-03-16 15:31 UTC (permalink / raw)
To: David S . Miller, Jakub Kicinski, Paolo Abeni
Cc: netdev, David Ahern, Simon Horman, eric.dumazet, Eric Dumazet
We can change inet_sk() to propagate const qualifier of its argument.
This should avoid some potential errors caused by accidental
(const -> not_const) promotion.
Other helpers like tcp_sk(), udp_sk(), raw_sk() will be handled
in separate patch series.
v2: use container_of_const() as advised by Jakub and Linus
Signed-off-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/netdev/20230315142841.3a2ac99a@kernel.org/
Link: https://lore.kernel.org/netdev/CAHk-=wiOf12nrYEF2vJMcucKjWPN-Ns_SW9fA7LwST_2Dzp7rw@mail.gmail.com/
---
include/net/inet_sock.h | 5 +----
include/trace/events/sock.h | 4 ++--
include/trace/events/tcp.h | 2 +-
net/ipv4/ip_output.c | 5 +++--
net/ipv6/ping.c | 2 +-
net/ipv6/udp.c | 2 +-
net/mptcp/sockopt.c | 2 +-
security/lsm_audit.c | 4 ++--
8 files changed, 12 insertions(+), 14 deletions(-)
diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h
index 51857117ac0995cee20c1e62752c470d2a473fa8..caa20a9055310f5ef108f9b1bb43214a3d598b9e 100644
--- a/include/net/inet_sock.h
+++ b/include/net/inet_sock.h
@@ -305,10 +305,7 @@ static inline struct sock *skb_to_full_sk(const struct sk_buff *skb)
return sk_to_full_sk(skb->sk);
}
-static inline struct inet_sock *inet_sk(const struct sock *sk)
-{
- return (struct inet_sock *)sk;
-}
+#define inet_sk(ptr) container_of_const(ptr, struct inet_sock, sk)
static inline void __inet_sk_copy_descendant(struct sock *sk_to,
const struct sock *sk_from,
diff --git a/include/trace/events/sock.h b/include/trace/events/sock.h
index 03d19fc562f872d68cfb2349797f0924cfba718b..fd206a6ab5b85a8eb50fc9303abc28d74c50ea07 100644
--- a/include/trace/events/sock.h
+++ b/include/trace/events/sock.h
@@ -158,7 +158,7 @@ TRACE_EVENT(inet_sock_set_state,
),
TP_fast_assign(
- struct inet_sock *inet = inet_sk(sk);
+ const struct inet_sock *inet = inet_sk(sk);
struct in6_addr *pin6;
__be32 *p32;
@@ -222,7 +222,7 @@ TRACE_EVENT(inet_sk_error_report,
),
TP_fast_assign(
- struct inet_sock *inet = inet_sk(sk);
+ const struct inet_sock *inet = inet_sk(sk);
struct in6_addr *pin6;
__be32 *p32;
diff --git a/include/trace/events/tcp.h b/include/trace/events/tcp.h
index 901b440238d5fc203b78cff1081b4b7e1e2eb4bd..bf06db8d2046c4a7f59070b724ce6fc7762f9d4b 100644
--- a/include/trace/events/tcp.h
+++ b/include/trace/events/tcp.h
@@ -67,7 +67,7 @@ DECLARE_EVENT_CLASS(tcp_event_sk_skb,
),
TP_fast_assign(
- struct inet_sock *inet = inet_sk(sk);
+ const struct inet_sock *inet = inet_sk(sk);
__be32 *p32;
__entry->skbaddr = skb;
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
index e7bef36ce26f5b5e5503eaf14319b2465b779598..cb04dbad9ea474fcaa4b5ba31c4a37299c4e1a8d 100644
--- a/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -129,7 +129,8 @@ int ip_local_out(struct net *net, struct sock *sk, struct sk_buff *skb)
}
EXPORT_SYMBOL_GPL(ip_local_out);
-static inline int ip_select_ttl(struct inet_sock *inet, struct dst_entry *dst)
+static inline int ip_select_ttl(const struct inet_sock *inet,
+ const struct dst_entry *dst)
{
int ttl = inet->uc_ttl;
@@ -146,7 +147,7 @@ int ip_build_and_send_pkt(struct sk_buff *skb, const struct sock *sk,
__be32 saddr, __be32 daddr, struct ip_options_rcu *opt,
u8 tos)
{
- struct inet_sock *inet = inet_sk(sk);
+ const struct inet_sock *inet = inet_sk(sk);
struct rtable *rt = skb_rtable(skb);
struct net *net = sock_net(sk);
struct iphdr *iph;
diff --git a/net/ipv6/ping.c b/net/ipv6/ping.c
index 808983bc2ec9f92be7d13237fb7d52b6423ccf23..c4835dbdfcff7912465713cdac9914b0f5585972 100644
--- a/net/ipv6/ping.c
+++ b/net/ipv6/ping.c
@@ -237,7 +237,7 @@ static int ping_v6_seq_show(struct seq_file *seq, void *v)
seq_puts(seq, IPV6_SEQ_DGRAM_HEADER);
} else {
int bucket = ((struct ping_iter_state *) seq->private)->bucket;
- struct inet_sock *inet = inet_sk(v);
+ struct inet_sock *inet = inet_sk((struct sock *)v);
__u16 srcp = ntohs(inet->inet_sport);
__u16 destp = ntohs(inet->inet_dport);
ip6_dgram_sock_seq_show(seq, v, srcp, destp, bucket);
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index 9fb2f33ee3a76a09bbe15a9aaf1371a804f91ee2..ab4ae886235ac9557219c901c5041adfa8b026ef 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -1708,7 +1708,7 @@ int udp6_seq_show(struct seq_file *seq, void *v)
seq_puts(seq, IPV6_SEQ_DGRAM_HEADER);
} else {
int bucket = ((struct udp_iter_state *)seq->private)->bucket;
- struct inet_sock *inet = inet_sk(v);
+ const struct inet_sock *inet = inet_sk((const struct sock *)v);
__u16 srcp = ntohs(inet->inet_sport);
__u16 destp = ntohs(inet->inet_dport);
__ip6_dgram_sock_seq_show(seq, v, srcp, destp,
diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c
index 8a9656248b0f09e78ebf3d6d787449f33505b81f..5cef4d3d21ac824ab6d3a5ee8be3bd00cce63925 100644
--- a/net/mptcp/sockopt.c
+++ b/net/mptcp/sockopt.c
@@ -1046,7 +1046,7 @@ static int mptcp_getsockopt_tcpinfo(struct mptcp_sock *msk, char __user *optval,
static void mptcp_get_sub_addrs(const struct sock *sk, struct mptcp_subflow_addrs *a)
{
- struct inet_sock *inet = inet_sk(sk);
+ const struct inet_sock *inet = inet_sk(sk);
memset(a, 0, sizeof(*a));
diff --git a/security/lsm_audit.c b/security/lsm_audit.c
index a7355b4b9bb86d173f94e43109148bc0ea27d1b3..00d3bdd386e294ecd562bfa8ce502bf179ad32d9 100644
--- a/security/lsm_audit.c
+++ b/security/lsm_audit.c
@@ -317,7 +317,7 @@ static void dump_common_audit_data(struct audit_buffer *ab,
switch (sk->sk_family) {
case AF_INET: {
- struct inet_sock *inet = inet_sk(sk);
+ const struct inet_sock *inet = inet_sk(sk);
print_ipv4_addr(ab, inet->inet_rcv_saddr,
inet->inet_sport,
@@ -329,7 +329,7 @@ static void dump_common_audit_data(struct audit_buffer *ab,
}
#if IS_ENABLED(CONFIG_IPV6)
case AF_INET6: {
- struct inet_sock *inet = inet_sk(sk);
+ const struct inet_sock *inet = inet_sk(sk);
print_ipv6_addr(ab, &sk->sk_v6_rcv_saddr,
inet->inet_sport,
--
2.40.0.rc2.332.ga46443480c-goog
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 net-next 2/8] ipv4: constify ip_mc_sf_allow() socket argument
2023-03-16 15:31 [PATCH v2 net-next 0/8] inet: better const qualifier awareness Eric Dumazet
2023-03-16 15:31 ` [PATCH v2 net-next 1/8] inet: preserve const qualifier in inet_sk() Eric Dumazet
@ 2023-03-16 15:31 ` Eric Dumazet
2023-03-16 15:31 ` [PATCH v2 net-next 3/8] udp: constify __udp_is_mcast_sock() " Eric Dumazet
` (7 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2023-03-16 15:31 UTC (permalink / raw)
To: David S . Miller, Jakub Kicinski, Paolo Abeni
Cc: netdev, David Ahern, Simon Horman, eric.dumazet, Eric Dumazet
This clarifies ip_mc_sf_allow() intent.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
---
include/linux/igmp.h | 2 +-
net/ipv4/igmp.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/linux/igmp.h b/include/linux/igmp.h
index b19d3284551f083d0eec3353cd8ec1f486ae4b42..ebf4349a53af7888104e8c5fe0d7af0e5604ae69 100644
--- a/include/linux/igmp.h
+++ b/include/linux/igmp.h
@@ -122,7 +122,7 @@ extern int ip_mc_msfget(struct sock *sk, struct ip_msfilter *msf,
sockptr_t optval, sockptr_t optlen);
extern int ip_mc_gsfget(struct sock *sk, struct group_filter *gsf,
sockptr_t optval, size_t offset);
-extern int ip_mc_sf_allow(struct sock *sk, __be32 local, __be32 rmt,
+extern int ip_mc_sf_allow(const struct sock *sk, __be32 local, __be32 rmt,
int dif, int sdif);
extern void ip_mc_init_dev(struct in_device *);
extern void ip_mc_destroy_dev(struct in_device *);
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
index c920aa9a62a988bf91a5420e59eb5878c271bf9a..48ff5f13e7979dc00da60b466ee2e74ddce0891b 100644
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -2638,10 +2638,10 @@ int ip_mc_gsfget(struct sock *sk, struct group_filter *gsf,
/*
* check if a multicast source filter allows delivery for a given <src,dst,intf>
*/
-int ip_mc_sf_allow(struct sock *sk, __be32 loc_addr, __be32 rmt_addr,
+int ip_mc_sf_allow(const struct sock *sk, __be32 loc_addr, __be32 rmt_addr,
int dif, int sdif)
{
- struct inet_sock *inet = inet_sk(sk);
+ const struct inet_sock *inet = inet_sk(sk);
struct ip_mc_socklist *pmc;
struct ip_sf_socklist *psl;
int i;
--
2.40.0.rc2.332.ga46443480c-goog
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 net-next 3/8] udp: constify __udp_is_mcast_sock() socket argument
2023-03-16 15:31 [PATCH v2 net-next 0/8] inet: better const qualifier awareness Eric Dumazet
2023-03-16 15:31 ` [PATCH v2 net-next 1/8] inet: preserve const qualifier in inet_sk() Eric Dumazet
2023-03-16 15:31 ` [PATCH v2 net-next 2/8] ipv4: constify ip_mc_sf_allow() socket argument Eric Dumazet
@ 2023-03-16 15:31 ` Eric Dumazet
2023-03-16 15:31 ` [PATCH v2 net-next 4/8] ipv6: constify inet6_mc_check() Eric Dumazet
` (6 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2023-03-16 15:31 UTC (permalink / raw)
To: David S . Miller, Jakub Kicinski, Paolo Abeni
Cc: netdev, David Ahern, Simon Horman, eric.dumazet, Eric Dumazet
This clarifies __udp_is_mcast_sock() intent.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
---
net/ipv4/udp.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index dc8feb54d835f0824aa6833e36db34f686c456ec..aa32afd871ee50968f7bb8152401be60dece1454 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -578,12 +578,12 @@ struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport,
EXPORT_SYMBOL_GPL(udp4_lib_lookup);
#endif
-static inline bool __udp_is_mcast_sock(struct net *net, struct sock *sk,
+static inline bool __udp_is_mcast_sock(struct net *net, const struct sock *sk,
__be16 loc_port, __be32 loc_addr,
__be16 rmt_port, __be32 rmt_addr,
int dif, int sdif, unsigned short hnum)
{
- struct inet_sock *inet = inet_sk(sk);
+ const struct inet_sock *inet = inet_sk(sk);
if (!net_eq(sock_net(sk), net) ||
udp_sk(sk)->udp_port_hash != hnum ||
--
2.40.0.rc2.332.ga46443480c-goog
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 net-next 4/8] ipv6: constify inet6_mc_check()
2023-03-16 15:31 [PATCH v2 net-next 0/8] inet: better const qualifier awareness Eric Dumazet
` (2 preceding siblings ...)
2023-03-16 15:31 ` [PATCH v2 net-next 3/8] udp: constify __udp_is_mcast_sock() " Eric Dumazet
@ 2023-03-16 15:31 ` Eric Dumazet
2023-03-16 15:31 ` [PATCH v2 net-next 5/8] udp6: constify __udp_v6_is_mcast_sock() socket argument Eric Dumazet
` (5 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2023-03-16 15:31 UTC (permalink / raw)
To: David S . Miller, Jakub Kicinski, Paolo Abeni
Cc: netdev, David Ahern, Simon Horman, eric.dumazet, Eric Dumazet
inet6_mc_check() is essentially a read-only function.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
---
include/net/addrconf.h | 2 +-
net/ipv6/mcast.c | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/include/net/addrconf.h b/include/net/addrconf.h
index c04f359655b86feed2b4b42cc69b90c63088238a..82da55101b5a30b2a5512d964429d2c5f73d03fd 100644
--- a/include/net/addrconf.h
+++ b/include/net/addrconf.h
@@ -223,7 +223,7 @@ int ipv6_sock_mc_drop(struct sock *sk, int ifindex,
const struct in6_addr *addr);
void __ipv6_sock_mc_close(struct sock *sk);
void ipv6_sock_mc_close(struct sock *sk);
-bool inet6_mc_check(struct sock *sk, const struct in6_addr *mc_addr,
+bool inet6_mc_check(const struct sock *sk, const struct in6_addr *mc_addr,
const struct in6_addr *src_addr);
int ipv6_dev_mc_inc(struct net_device *dev, const struct in6_addr *addr);
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index 1c02160cf7a4c54f0d8687b8368e5f6151ab0bce..714cdc9e2b8edfb925a061a722c38b37b1c6088e 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -627,12 +627,12 @@ int ip6_mc_msfget(struct sock *sk, struct group_filter *gsf,
return 0;
}
-bool inet6_mc_check(struct sock *sk, const struct in6_addr *mc_addr,
+bool inet6_mc_check(const struct sock *sk, const struct in6_addr *mc_addr,
const struct in6_addr *src_addr)
{
- struct ipv6_pinfo *np = inet6_sk(sk);
- struct ipv6_mc_socklist *mc;
- struct ip6_sf_socklist *psl;
+ const struct ipv6_pinfo *np = inet6_sk(sk);
+ const struct ipv6_mc_socklist *mc;
+ const struct ip6_sf_socklist *psl;
bool rv = true;
rcu_read_lock();
--
2.40.0.rc2.332.ga46443480c-goog
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 net-next 5/8] udp6: constify __udp_v6_is_mcast_sock() socket argument
2023-03-16 15:31 [PATCH v2 net-next 0/8] inet: better const qualifier awareness Eric Dumazet
` (3 preceding siblings ...)
2023-03-16 15:31 ` [PATCH v2 net-next 4/8] ipv6: constify inet6_mc_check() Eric Dumazet
@ 2023-03-16 15:31 ` Eric Dumazet
2023-03-16 15:32 ` [PATCH v2 net-next 6/8] ipv6: raw: constify raw_v6_match() " Eric Dumazet
` (4 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2023-03-16 15:31 UTC (permalink / raw)
To: David S . Miller, Jakub Kicinski, Paolo Abeni
Cc: netdev, David Ahern, Simon Horman, eric.dumazet, Eric Dumazet
This clarifies __udp_v6_is_mcast_sock() intent.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
---
net/ipv6/udp.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index ab4ae886235ac9557219c901c5041adfa8b026ef..d350e57c479299e732bd3595c1964acddde2d876 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -805,12 +805,12 @@ static int udpv6_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
return 0;
}
-static bool __udp_v6_is_mcast_sock(struct net *net, struct sock *sk,
+static bool __udp_v6_is_mcast_sock(struct net *net, const struct sock *sk,
__be16 loc_port, const struct in6_addr *loc_addr,
__be16 rmt_port, const struct in6_addr *rmt_addr,
int dif, int sdif, unsigned short hnum)
{
- struct inet_sock *inet = inet_sk(sk);
+ const struct inet_sock *inet = inet_sk(sk);
if (!net_eq(sock_net(sk), net))
return false;
--
2.40.0.rc2.332.ga46443480c-goog
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 net-next 6/8] ipv6: raw: constify raw_v6_match() socket argument
2023-03-16 15:31 [PATCH v2 net-next 0/8] inet: better const qualifier awareness Eric Dumazet
` (4 preceding siblings ...)
2023-03-16 15:31 ` [PATCH v2 net-next 5/8] udp6: constify __udp_v6_is_mcast_sock() socket argument Eric Dumazet
@ 2023-03-16 15:32 ` Eric Dumazet
2023-03-16 15:32 ` [PATCH v2 net-next 7/8] ipv4: raw: constify raw_v4_match() " Eric Dumazet
` (3 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2023-03-16 15:32 UTC (permalink / raw)
To: David S . Miller, Jakub Kicinski, Paolo Abeni
Cc: netdev, David Ahern, Simon Horman, eric.dumazet, Eric Dumazet
This clarifies raw_v6_match() intent.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
---
include/net/rawv6.h | 2 +-
net/ipv6/raw.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/net/rawv6.h b/include/net/rawv6.h
index bc70909625f60dcd819f50a258841d20e5ba0c68..82810cbe37984437569186783f39f166e89cb9b8 100644
--- a/include/net/rawv6.h
+++ b/include/net/rawv6.h
@@ -6,7 +6,7 @@
#include <net/raw.h>
extern struct raw_hashinfo raw_v6_hashinfo;
-bool raw_v6_match(struct net *net, struct sock *sk, unsigned short num,
+bool raw_v6_match(struct net *net, const struct sock *sk, unsigned short num,
const struct in6_addr *loc_addr,
const struct in6_addr *rmt_addr, int dif, int sdif);
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
index bac9ba747bdecf8df24acb6c980a822d8f237403..6ac2f2690c44c96e9ac4cb7368ee7abdbeaf4334 100644
--- a/net/ipv6/raw.c
+++ b/net/ipv6/raw.c
@@ -64,7 +64,7 @@
struct raw_hashinfo raw_v6_hashinfo;
EXPORT_SYMBOL_GPL(raw_v6_hashinfo);
-bool raw_v6_match(struct net *net, struct sock *sk, unsigned short num,
+bool raw_v6_match(struct net *net, const struct sock *sk, unsigned short num,
const struct in6_addr *loc_addr,
const struct in6_addr *rmt_addr, int dif, int sdif)
{
--
2.40.0.rc2.332.ga46443480c-goog
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 net-next 7/8] ipv4: raw: constify raw_v4_match() socket argument
2023-03-16 15:31 [PATCH v2 net-next 0/8] inet: better const qualifier awareness Eric Dumazet
` (5 preceding siblings ...)
2023-03-16 15:32 ` [PATCH v2 net-next 6/8] ipv6: raw: constify raw_v6_match() " Eric Dumazet
@ 2023-03-16 15:32 ` Eric Dumazet
2023-03-16 15:32 ` [PATCH v2 net-next 8/8] inet_diag: constify raw_lookup() " Eric Dumazet
` (2 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2023-03-16 15:32 UTC (permalink / raw)
To: David S . Miller, Jakub Kicinski, Paolo Abeni
Cc: netdev, David Ahern, Simon Horman, eric.dumazet, Eric Dumazet
This clarifies raw_v4_match() intent.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
---
include/net/raw.h | 2 +-
net/ipv4/raw.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/net/raw.h b/include/net/raw.h
index 2c004c20ed996d1dbe07f2c8d25edd2ce03cca03..7ad15830cf38460f1fae3a187986d74faef6dd1d 100644
--- a/include/net/raw.h
+++ b/include/net/raw.h
@@ -22,7 +22,7 @@
extern struct proto raw_prot;
extern struct raw_hashinfo raw_v4_hashinfo;
-bool raw_v4_match(struct net *net, struct sock *sk, unsigned short num,
+bool raw_v4_match(struct net *net, const struct sock *sk, unsigned short num,
__be32 raddr, __be32 laddr, int dif, int sdif);
int raw_abort(struct sock *sk, int err);
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
index 94df935ee0c5a83a4b1393653b79ac6060b4f12a..3cf68695b40ddc0e79c8fbd62f317048cf5c88e3 100644
--- a/net/ipv4/raw.c
+++ b/net/ipv4/raw.c
@@ -116,10 +116,10 @@ void raw_unhash_sk(struct sock *sk)
}
EXPORT_SYMBOL_GPL(raw_unhash_sk);
-bool raw_v4_match(struct net *net, struct sock *sk, unsigned short num,
+bool raw_v4_match(struct net *net, const struct sock *sk, unsigned short num,
__be32 raddr, __be32 laddr, int dif, int sdif)
{
- struct inet_sock *inet = inet_sk(sk);
+ const struct inet_sock *inet = inet_sk(sk);
if (net_eq(sock_net(sk), net) && inet->inet_num == num &&
!(inet->inet_daddr && inet->inet_daddr != raddr) &&
--
2.40.0.rc2.332.ga46443480c-goog
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 net-next 8/8] inet_diag: constify raw_lookup() socket argument
2023-03-16 15:31 [PATCH v2 net-next 0/8] inet: better const qualifier awareness Eric Dumazet
` (6 preceding siblings ...)
2023-03-16 15:32 ` [PATCH v2 net-next 7/8] ipv4: raw: constify raw_v4_match() " Eric Dumazet
@ 2023-03-16 15:32 ` Eric Dumazet
2023-03-16 18:35 ` [PATCH v2 net-next 0/8] inet: better const qualifier awareness David Ahern
2023-03-17 9:00 ` patchwork-bot+netdevbpf
9 siblings, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2023-03-16 15:32 UTC (permalink / raw)
To: David S . Miller, Jakub Kicinski, Paolo Abeni
Cc: netdev, David Ahern, Simon Horman, eric.dumazet, Eric Dumazet
Now both raw_v4_match() and raw_v6_match() accept a const socket,
raw_lookup() can do the same to clarify its role.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
---
net/ipv4/raw_diag.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/ipv4/raw_diag.c b/net/ipv4/raw_diag.c
index 999321834b94a8f7f2a4996575b7cfaafb6fa2b7..bca49a844f01083cdfdade6f52852d48ddb36d70 100644
--- a/net/ipv4/raw_diag.c
+++ b/net/ipv4/raw_diag.c
@@ -34,7 +34,7 @@ raw_get_hashinfo(const struct inet_diag_req_v2 *r)
* use helper to figure it out.
*/
-static bool raw_lookup(struct net *net, struct sock *sk,
+static bool raw_lookup(struct net *net, const struct sock *sk,
const struct inet_diag_req_v2 *req)
{
struct inet_diag_req_raw *r = (void *)req;
--
2.40.0.rc2.332.ga46443480c-goog
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2 net-next 0/8] inet: better const qualifier awareness
2023-03-16 15:31 [PATCH v2 net-next 0/8] inet: better const qualifier awareness Eric Dumazet
` (7 preceding siblings ...)
2023-03-16 15:32 ` [PATCH v2 net-next 8/8] inet_diag: constify raw_lookup() " Eric Dumazet
@ 2023-03-16 18:35 ` David Ahern
2023-03-17 9:00 ` patchwork-bot+netdevbpf
9 siblings, 0 replies; 11+ messages in thread
From: David Ahern @ 2023-03-16 18:35 UTC (permalink / raw)
To: Eric Dumazet, David S . Miller, Jakub Kicinski, Paolo Abeni
Cc: netdev, Simon Horman, eric.dumazet
On 3/16/23 9:31 AM, Eric Dumazet wrote:
> inet_sk() can be changed to propagate const qualifier,
> thanks to container_of_const()
>
> Following patches in this series add more const qualifiers.
>
> Other helpers like tcp_sk(), udp_sk(), raw_sk(), ... will be handled
> in following series.
>
> Eric Dumazet (8):
> inet: preserve const qualifier in inet_sk()
> ipv4: constify ip_mc_sf_allow() socket argument
> udp: constify __udp_is_mcast_sock() socket argument
> ipv6: constify inet6_mc_check()
> udp6: constify __udp_v6_is_mcast_sock() socket argument
> ipv6: raw: constify raw_v6_match() socket argument
> ipv4: raw: constify raw_v4_match() socket argument
> inet_diag: constify raw_lookup() socket argument
>
> include/linux/igmp.h | 2 +-
> include/net/addrconf.h | 2 +-
> include/net/inet_sock.h | 5 +----
> include/net/raw.h | 2 +-
> include/net/rawv6.h | 2 +-
> include/trace/events/sock.h | 4 ++--
> include/trace/events/tcp.h | 2 +-
> net/ipv4/igmp.c | 4 ++--
> net/ipv4/ip_output.c | 5 +++--
> net/ipv4/raw.c | 4 ++--
> net/ipv4/raw_diag.c | 2 +-
> net/ipv4/udp.c | 4 ++--
> net/ipv6/mcast.c | 8 ++++----
> net/ipv6/ping.c | 2 +-
> net/ipv6/raw.c | 2 +-
> net/ipv6/udp.c | 6 +++---
> net/mptcp/sockopt.c | 2 +-
> security/lsm_audit.c | 4 ++--
> 18 files changed, 30 insertions(+), 32 deletions(-)
>
For the set:
Reviewed-by: David Ahern <dsahern@kernel.org>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 net-next 0/8] inet: better const qualifier awareness
2023-03-16 15:31 [PATCH v2 net-next 0/8] inet: better const qualifier awareness Eric Dumazet
` (8 preceding siblings ...)
2023-03-16 18:35 ` [PATCH v2 net-next 0/8] inet: better const qualifier awareness David Ahern
@ 2023-03-17 9:00 ` patchwork-bot+netdevbpf
9 siblings, 0 replies; 11+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-03-17 9:00 UTC (permalink / raw)
To: Eric Dumazet
Cc: davem, kuba, pabeni, netdev, dsahern, simon.horman, eric.dumazet
Hello:
This series was applied to netdev/net-next.git (main)
by David S. Miller <davem@davemloft.net>:
On Thu, 16 Mar 2023 15:31:54 +0000 you wrote:
> inet_sk() can be changed to propagate const qualifier,
> thanks to container_of_const()
>
> Following patches in this series add more const qualifiers.
>
> Other helpers like tcp_sk(), udp_sk(), raw_sk(), ... will be handled
> in following series.
>
> [...]
Here is the summary with links:
- [v2,net-next,1/8] inet: preserve const qualifier in inet_sk()
https://git.kernel.org/netdev/net-next/c/abc17a11ed29
- [v2,net-next,2/8] ipv4: constify ip_mc_sf_allow() socket argument
https://git.kernel.org/netdev/net-next/c/33e972bdf0b0
- [v2,net-next,3/8] udp: constify __udp_is_mcast_sock() socket argument
https://git.kernel.org/netdev/net-next/c/a0a989d30075
- [v2,net-next,4/8] ipv6: constify inet6_mc_check()
https://git.kernel.org/netdev/net-next/c/66eb554c6449
- [v2,net-next,5/8] udp6: constify __udp_v6_is_mcast_sock() socket argument
https://git.kernel.org/netdev/net-next/c/dc3731bad8e1
- [v2,net-next,6/8] ipv6: raw: constify raw_v6_match() socket argument
https://git.kernel.org/netdev/net-next/c/db6af4fdb150
- [v2,net-next,7/8] ipv4: raw: constify raw_v4_match() socket argument
https://git.kernel.org/netdev/net-next/c/0a8c2568209e
- [v2,net-next,8/8] inet_diag: constify raw_lookup() socket argument
https://git.kernel.org/netdev/net-next/c/736c8b52c8ad
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2023-03-17 9:02 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-16 15:31 [PATCH v2 net-next 0/8] inet: better const qualifier awareness Eric Dumazet
2023-03-16 15:31 ` [PATCH v2 net-next 1/8] inet: preserve const qualifier in inet_sk() Eric Dumazet
2023-03-16 15:31 ` [PATCH v2 net-next 2/8] ipv4: constify ip_mc_sf_allow() socket argument Eric Dumazet
2023-03-16 15:31 ` [PATCH v2 net-next 3/8] udp: constify __udp_is_mcast_sock() " Eric Dumazet
2023-03-16 15:31 ` [PATCH v2 net-next 4/8] ipv6: constify inet6_mc_check() Eric Dumazet
2023-03-16 15:31 ` [PATCH v2 net-next 5/8] udp6: constify __udp_v6_is_mcast_sock() socket argument Eric Dumazet
2023-03-16 15:32 ` [PATCH v2 net-next 6/8] ipv6: raw: constify raw_v6_match() " Eric Dumazet
2023-03-16 15:32 ` [PATCH v2 net-next 7/8] ipv4: raw: constify raw_v4_match() " Eric Dumazet
2023-03-16 15:32 ` [PATCH v2 net-next 8/8] inet_diag: constify raw_lookup() " Eric Dumazet
2023-03-16 18:35 ` [PATCH v2 net-next 0/8] inet: better const qualifier awareness David Ahern
2023-03-17 9:00 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).