Commit d27d367d authored by David S. Miller's avatar David S. Miller

Merge branch 'inet-const'

Eric Dumazet says:

====================
inet: better const qualifier awareness

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.
====================
Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 82b32970 736c8b52
...@@ -122,7 +122,7 @@ extern int ip_mc_msfget(struct sock *sk, struct ip_msfilter *msf, ...@@ -122,7 +122,7 @@ extern int ip_mc_msfget(struct sock *sk, struct ip_msfilter *msf,
sockptr_t optval, sockptr_t optlen); sockptr_t optval, sockptr_t optlen);
extern int ip_mc_gsfget(struct sock *sk, struct group_filter *gsf, extern int ip_mc_gsfget(struct sock *sk, struct group_filter *gsf,
sockptr_t optval, size_t offset); 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); int dif, int sdif);
extern void ip_mc_init_dev(struct in_device *); extern void ip_mc_init_dev(struct in_device *);
extern void ip_mc_destroy_dev(struct in_device *); extern void ip_mc_destroy_dev(struct in_device *);
......
...@@ -223,7 +223,7 @@ int ipv6_sock_mc_drop(struct sock *sk, int ifindex, ...@@ -223,7 +223,7 @@ int ipv6_sock_mc_drop(struct sock *sk, int ifindex,
const struct in6_addr *addr); const struct in6_addr *addr);
void __ipv6_sock_mc_close(struct sock *sk); void __ipv6_sock_mc_close(struct sock *sk);
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); const struct in6_addr *src_addr);
int ipv6_dev_mc_inc(struct net_device *dev, const struct in6_addr *addr); int ipv6_dev_mc_inc(struct net_device *dev, const struct in6_addr *addr);
......
...@@ -305,10 +305,7 @@ static inline struct sock *skb_to_full_sk(const struct sk_buff *skb) ...@@ -305,10 +305,7 @@ static inline struct sock *skb_to_full_sk(const struct sk_buff *skb)
return sk_to_full_sk(skb->sk); return sk_to_full_sk(skb->sk);
} }
static inline struct inet_sock *inet_sk(const struct sock *sk) #define inet_sk(ptr) container_of_const(ptr, struct inet_sock, sk)
{
return (struct inet_sock *)sk;
}
static inline void __inet_sk_copy_descendant(struct sock *sk_to, static inline void __inet_sk_copy_descendant(struct sock *sk_to,
const struct sock *sk_from, const struct sock *sk_from,
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
extern struct proto raw_prot; extern struct proto raw_prot;
extern struct raw_hashinfo raw_v4_hashinfo; 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); __be32 raddr, __be32 laddr, int dif, int sdif);
int raw_abort(struct sock *sk, int err); int raw_abort(struct sock *sk, int err);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#include <net/raw.h> #include <net/raw.h>
extern struct raw_hashinfo raw_v6_hashinfo; 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 *loc_addr,
const struct in6_addr *rmt_addr, int dif, int sdif); const struct in6_addr *rmt_addr, int dif, int sdif);
......
...@@ -158,7 +158,7 @@ TRACE_EVENT(inet_sock_set_state, ...@@ -158,7 +158,7 @@ TRACE_EVENT(inet_sock_set_state,
), ),
TP_fast_assign( TP_fast_assign(
struct inet_sock *inet = inet_sk(sk); const struct inet_sock *inet = inet_sk(sk);
struct in6_addr *pin6; struct in6_addr *pin6;
__be32 *p32; __be32 *p32;
...@@ -222,7 +222,7 @@ TRACE_EVENT(inet_sk_error_report, ...@@ -222,7 +222,7 @@ TRACE_EVENT(inet_sk_error_report,
), ),
TP_fast_assign( TP_fast_assign(
struct inet_sock *inet = inet_sk(sk); const struct inet_sock *inet = inet_sk(sk);
struct in6_addr *pin6; struct in6_addr *pin6;
__be32 *p32; __be32 *p32;
......
...@@ -67,7 +67,7 @@ DECLARE_EVENT_CLASS(tcp_event_sk_skb, ...@@ -67,7 +67,7 @@ DECLARE_EVENT_CLASS(tcp_event_sk_skb,
), ),
TP_fast_assign( TP_fast_assign(
struct inet_sock *inet = inet_sk(sk); const struct inet_sock *inet = inet_sk(sk);
__be32 *p32; __be32 *p32;
__entry->skbaddr = skb; __entry->skbaddr = skb;
......
...@@ -2638,10 +2638,10 @@ int ip_mc_gsfget(struct sock *sk, struct group_filter *gsf, ...@@ -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> * 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) 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_mc_socklist *pmc;
struct ip_sf_socklist *psl; struct ip_sf_socklist *psl;
int i; int i;
......
...@@ -129,7 +129,8 @@ int ip_local_out(struct net *net, struct sock *sk, struct sk_buff *skb) ...@@ -129,7 +129,8 @@ int ip_local_out(struct net *net, struct sock *sk, struct sk_buff *skb)
} }
EXPORT_SYMBOL_GPL(ip_local_out); 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; int ttl = inet->uc_ttl;
...@@ -146,7 +147,7 @@ int ip_build_and_send_pkt(struct sk_buff *skb, const struct sock *sk, ...@@ -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, __be32 saddr, __be32 daddr, struct ip_options_rcu *opt,
u8 tos) u8 tos)
{ {
struct inet_sock *inet = inet_sk(sk); const struct inet_sock *inet = inet_sk(sk);
struct rtable *rt = skb_rtable(skb); struct rtable *rt = skb_rtable(skb);
struct net *net = sock_net(sk); struct net *net = sock_net(sk);
struct iphdr *iph; struct iphdr *iph;
......
...@@ -116,10 +116,10 @@ void raw_unhash_sk(struct sock *sk) ...@@ -116,10 +116,10 @@ void raw_unhash_sk(struct sock *sk)
} }
EXPORT_SYMBOL_GPL(raw_unhash_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) __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 && if (net_eq(sock_net(sk), net) && inet->inet_num == num &&
!(inet->inet_daddr && inet->inet_daddr != raddr) && !(inet->inet_daddr && inet->inet_daddr != raddr) &&
......
...@@ -34,7 +34,7 @@ raw_get_hashinfo(const struct inet_diag_req_v2 *r) ...@@ -34,7 +34,7 @@ raw_get_hashinfo(const struct inet_diag_req_v2 *r)
* use helper to figure it out. * 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) const struct inet_diag_req_v2 *req)
{ {
struct inet_diag_req_raw *r = (void *)req; struct inet_diag_req_raw *r = (void *)req;
......
...@@ -578,12 +578,12 @@ struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport, ...@@ -578,12 +578,12 @@ struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport,
EXPORT_SYMBOL_GPL(udp4_lib_lookup); EXPORT_SYMBOL_GPL(udp4_lib_lookup);
#endif #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 loc_port, __be32 loc_addr,
__be16 rmt_port, __be32 rmt_addr, __be16 rmt_port, __be32 rmt_addr,
int dif, int sdif, unsigned short hnum) 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) || if (!net_eq(sock_net(sk), net) ||
udp_sk(sk)->udp_port_hash != hnum || udp_sk(sk)->udp_port_hash != hnum ||
......
...@@ -627,12 +627,12 @@ int ip6_mc_msfget(struct sock *sk, struct group_filter *gsf, ...@@ -627,12 +627,12 @@ int ip6_mc_msfget(struct sock *sk, struct group_filter *gsf,
return 0; 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) const struct in6_addr *src_addr)
{ {
struct ipv6_pinfo *np = inet6_sk(sk); const struct ipv6_pinfo *np = inet6_sk(sk);
struct ipv6_mc_socklist *mc; const struct ipv6_mc_socklist *mc;
struct ip6_sf_socklist *psl; const struct ip6_sf_socklist *psl;
bool rv = true; bool rv = true;
rcu_read_lock(); rcu_read_lock();
......
...@@ -237,7 +237,7 @@ static int ping_v6_seq_show(struct seq_file *seq, void *v) ...@@ -237,7 +237,7 @@ static int ping_v6_seq_show(struct seq_file *seq, void *v)
seq_puts(seq, IPV6_SEQ_DGRAM_HEADER); seq_puts(seq, IPV6_SEQ_DGRAM_HEADER);
} else { } else {
int bucket = ((struct ping_iter_state *) seq->private)->bucket; 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 srcp = ntohs(inet->inet_sport);
__u16 destp = ntohs(inet->inet_dport); __u16 destp = ntohs(inet->inet_dport);
ip6_dgram_sock_seq_show(seq, v, srcp, destp, bucket); ip6_dgram_sock_seq_show(seq, v, srcp, destp, bucket);
......
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
struct raw_hashinfo raw_v6_hashinfo; struct raw_hashinfo raw_v6_hashinfo;
EXPORT_SYMBOL_GPL(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 *loc_addr,
const struct in6_addr *rmt_addr, int dif, int sdif) const struct in6_addr *rmt_addr, int dif, int sdif)
{ {
......
...@@ -805,12 +805,12 @@ static int udpv6_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) ...@@ -805,12 +805,12 @@ static int udpv6_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
return 0; 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 loc_port, const struct in6_addr *loc_addr,
__be16 rmt_port, const struct in6_addr *rmt_addr, __be16 rmt_port, const struct in6_addr *rmt_addr,
int dif, int sdif, unsigned short hnum) 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)) if (!net_eq(sock_net(sk), net))
return false; return false;
...@@ -1708,7 +1708,7 @@ int udp6_seq_show(struct seq_file *seq, void *v) ...@@ -1708,7 +1708,7 @@ int udp6_seq_show(struct seq_file *seq, void *v)
seq_puts(seq, IPV6_SEQ_DGRAM_HEADER); seq_puts(seq, IPV6_SEQ_DGRAM_HEADER);
} else { } else {
int bucket = ((struct udp_iter_state *)seq->private)->bucket; 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 srcp = ntohs(inet->inet_sport);
__u16 destp = ntohs(inet->inet_dport); __u16 destp = ntohs(inet->inet_dport);
__ip6_dgram_sock_seq_show(seq, v, srcp, destp, __ip6_dgram_sock_seq_show(seq, v, srcp, destp,
......
...@@ -1046,7 +1046,7 @@ static int mptcp_getsockopt_tcpinfo(struct mptcp_sock *msk, char __user *optval, ...@@ -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) 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)); memset(a, 0, sizeof(*a));
......
...@@ -317,7 +317,7 @@ static void dump_common_audit_data(struct audit_buffer *ab, ...@@ -317,7 +317,7 @@ static void dump_common_audit_data(struct audit_buffer *ab,
switch (sk->sk_family) { switch (sk->sk_family) {
case AF_INET: { 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, print_ipv4_addr(ab, inet->inet_rcv_saddr,
inet->inet_sport, inet->inet_sport,
...@@ -329,7 +329,7 @@ static void dump_common_audit_data(struct audit_buffer *ab, ...@@ -329,7 +329,7 @@ static void dump_common_audit_data(struct audit_buffer *ab,
} }
#if IS_ENABLED(CONFIG_IPV6) #if IS_ENABLED(CONFIG_IPV6)
case AF_INET6: { 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, print_ipv6_addr(ab, &sk->sk_v6_rcv_saddr,
inet->inet_sport, inet->inet_sport,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment