* [patch 11/14] replace __inline__ by inline in net/key
From: Daniel Lezcano @ 2008-02-06 9:14 UTC (permalink / raw)
To: davem; +Cc: netdev
In-Reply-To: <20080206091405.581849582@mai.toulouse-stg.fr.ibm.com>
[-- Attachment #1: remove-__inline__-in-af_key.patch --]
[-- Type: text/plain, Size: 1007 bytes --]
replace __inline__ by inline in net/key
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
---
net/key/af_key.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
Index: net-2.6/net/key/af_key.c
===================================================================
--- net-2.6.orig/net/key/af_key.c
+++ net-2.6/net/key/af_key.c
@@ -92,13 +92,13 @@ static void pfkey_table_grab(void)
}
}
-static __inline__ void pfkey_table_ungrab(void)
+static inline void pfkey_table_ungrab(void)
{
write_unlock_bh(&pfkey_table_lock);
wake_up(&pfkey_table_wait);
}
-static __inline__ void pfkey_lock_table(void)
+static inline void pfkey_lock_table(void)
{
/* read_lock() synchronizes us to pfkey_table_grab */
@@ -107,7 +107,7 @@ static __inline__ void pfkey_lock_table(
read_unlock(&pfkey_table_lock);
}
-static __inline__ void pfkey_unlock_table(void)
+static inline void pfkey_unlock_table(void)
{
if (atomic_dec_and_test(&pfkey_table_users))
wake_up(&pfkey_table_wait);
--
^ permalink raw reply
* [patch 13/14] replace __inline__ by inline in include/net
From: Daniel Lezcano @ 2008-02-06 9:14 UTC (permalink / raw)
To: davem; +Cc: netdev
In-Reply-To: <20080206091405.581849582@mai.toulouse-stg.fr.ibm.com>
[-- Attachment #1: remove-__inline__-in-include-net.patch --]
[-- Type: text/plain, Size: 20460 bytes --]
replace __inline__ by inline in include/net
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
---
include/net/addrconf.h | 2 +-
include/net/ax25.h | 2 +-
include/net/checksum.h | 4 ++--
include/net/dn_nsp.h | 16 ++++++++--------
include/net/ip.h | 2 +-
include/net/ip6_checksum.h | 8 ++++----
include/net/ip_vs.h | 2 +-
include/net/ipx.h | 16 ++++++++--------
include/net/llc_c_ev.h | 4 ++--
include/net/llc_conn.h | 4 ++--
include/net/llc_s_ev.h | 2 +-
include/net/netrom.h | 8 ++++----
include/net/scm.h | 14 ++++++++------
include/net/sock.h | 20 ++++++++++----------
include/net/tcp.h | 6 +++---
include/net/udplite.h | 4 ++--
include/net/x25.h | 8 ++++----
include/net/xfrm.h | 42 ++++++++++++++++++++----------------------
18 files changed, 82 insertions(+), 82 deletions(-)
Index: net-2.6/include/net/addrconf.h
===================================================================
--- net-2.6.orig/include/net/addrconf.h
+++ net-2.6/include/net/addrconf.h
@@ -190,7 +190,7 @@ extern void addrconf_forwarding_on(voi
* Hash function taken from net_alias.c
*/
-static __inline__ u8 ipv6_addr_hash(const struct in6_addr *addr)
+static inline u8 ipv6_addr_hash(const struct in6_addr *addr)
{
__u32 word;
Index: net-2.6/include/net/ax25.h
===================================================================
--- net-2.6.orig/include/net/ax25.h
+++ net-2.6/include/net/ax25.h
@@ -252,7 +252,7 @@ typedef struct ax25_cb {
#define ax25_cb_hold(__ax25) \
atomic_inc(&((__ax25)->refcount))
-static __inline__ void ax25_cb_put(ax25_cb *ax25)
+static inline void ax25_cb_put(ax25_cb *ax25)
{
if (atomic_dec_and_test(&ax25->refcount)) {
kfree(ax25->digipeat);
Index: net-2.6/include/net/checksum.h
===================================================================
--- net-2.6.orig/include/net/checksum.h
+++ net-2.6/include/net/checksum.h
@@ -41,8 +41,8 @@ __wsum csum_and_copy_from_user (const vo
#endif
#ifndef HAVE_CSUM_COPY_USER
-static __inline__ __wsum csum_and_copy_to_user
-(const void *src, void __user *dst, int len, __wsum sum, int *err_ptr)
+static inline __wsum csum_and_copy_to_user(const void *src, void __user *dst,
+ int len, __wsum sum, int *err_ptr)
{
sum = csum_partial(src, len, sum);
Index: net-2.6/include/net/dn_nsp.h
===================================================================
--- net-2.6.orig/include/net/dn_nsp.h
+++ net-2.6/include/net/dn_nsp.h
@@ -150,7 +150,7 @@ struct srcobj_fmt
* numbers used in NSP. Similar in operation to the functions
* of the same name in TCP.
*/
-static __inline__ int dn_before(__u16 seq1, __u16 seq2)
+static inline int dn_before(__u16 seq1, __u16 seq2)
{
seq1 &= 0x0fff;
seq2 &= 0x0fff;
@@ -159,7 +159,7 @@ static __inline__ int dn_before(__u16 se
}
-static __inline__ int dn_after(__u16 seq1, __u16 seq2)
+static inline int dn_after(__u16 seq1, __u16 seq2)
{
seq1 &= 0x0fff;
seq2 &= 0x0fff;
@@ -167,23 +167,23 @@ static __inline__ int dn_after(__u16 seq
return (int)((seq2 - seq1) & 0x0fff) > 2048;
}
-static __inline__ int dn_equal(__u16 seq1, __u16 seq2)
+static inline int dn_equal(__u16 seq1, __u16 seq2)
{
return ((seq1 ^ seq2) & 0x0fff) == 0;
}
-static __inline__ int dn_before_or_equal(__u16 seq1, __u16 seq2)
+static inline int dn_before_or_equal(__u16 seq1, __u16 seq2)
{
return (dn_before(seq1, seq2) || dn_equal(seq1, seq2));
}
-static __inline__ void seq_add(__u16 *seq, __u16 off)
+static inline void seq_add(__u16 *seq, __u16 off)
{
(*seq) += off;
(*seq) &= 0x0fff;
}
-static __inline__ int seq_next(__u16 seq1, __u16 seq2)
+static inline int seq_next(__u16 seq1, __u16 seq2)
{
return dn_equal(seq1 + 1, seq2);
}
@@ -191,7 +191,7 @@ static __inline__ int seq_next(__u16 seq
/*
* Can we delay the ack ?
*/
-static __inline__ int sendack(__u16 seq)
+static inline int sendack(__u16 seq)
{
return (int)((seq & 0x1000) ? 0 : 1);
}
@@ -199,7 +199,7 @@ static __inline__ int sendack(__u16 seq)
/*
* Is socket congested ?
*/
-static __inline__ int dn_congested(struct sock *sk)
+static inline int dn_congested(struct sock *sk)
{
return atomic_read(&sk->sk_rmem_alloc) > (sk->sk_rcvbuf >> 1);
}
Index: net-2.6/include/net/ip.h
===================================================================
--- net-2.6.orig/include/net/ip.h
+++ net-2.6/include/net/ip.h
@@ -298,7 +298,7 @@ static inline void ip_ib_mc_map(__be32 n
#include <linux/ipv6.h>
#endif
-static __inline__ void inet_reset_saddr(struct sock *sk)
+static inline void inet_reset_saddr(struct sock *sk)
{
inet_sk(sk)->rcv_saddr = inet_sk(sk)->saddr = 0;
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
Index: net-2.6/include/net/ip6_checksum.h
===================================================================
--- net-2.6.orig/include/net/ip6_checksum.h
+++ net-2.6/include/net/ip6_checksum.h
@@ -34,10 +34,10 @@
#ifndef _HAVE_ARCH_IPV6_CSUM
-static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
- const struct in6_addr *daddr,
- __u32 len, unsigned short proto,
- __wsum csum)
+static inline __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
+ const struct in6_addr *daddr,
+ __u32 len, unsigned short proto,
+ __wsum csum)
{
int carry;
Index: net-2.6/include/net/ip_vs.h
===================================================================
--- net-2.6.orig/include/net/ip_vs.h
+++ net-2.6/include/net/ip_vs.h
@@ -925,7 +925,7 @@ extern void ip_vs_dst_reset(struct ip_vs
extern int ip_vs_drop_rate;
extern int ip_vs_drop_counter;
-static __inline__ int ip_vs_todrop(void)
+static inline int ip_vs_todrop(void)
{
if (!ip_vs_drop_rate) return 0;
if (--ip_vs_drop_counter > 0) return 0;
Index: net-2.6/include/net/ipx.h
===================================================================
--- net-2.6.orig/include/net/ipx.h
+++ net-2.6/include/net/ipx.h
@@ -41,7 +41,7 @@ struct ipxhdr {
struct ipx_address ipx_source __attribute__ ((packed));
};
-static __inline__ struct ipxhdr *ipx_hdr(struct sk_buff *skb)
+static inline struct ipxhdr *ipx_hdr(struct sk_buff *skb)
{
return (struct ipxhdr *)skb_transport_header(skb);
}
@@ -135,27 +135,27 @@ extern void ipx_proc_exit(void);
extern const char *ipx_frame_name(__be16);
extern const char *ipx_device_name(struct ipx_interface *intrfc);
-static __inline__ void ipxitf_hold(struct ipx_interface *intrfc)
+static inline void ipxitf_hold(struct ipx_interface *intrfc)
{
atomic_inc(&intrfc->refcnt);
}
extern void ipxitf_down(struct ipx_interface *intrfc);
-static __inline__ void ipxitf_put(struct ipx_interface *intrfc)
+static inline void ipxitf_put(struct ipx_interface *intrfc)
{
if (atomic_dec_and_test(&intrfc->refcnt))
ipxitf_down(intrfc);
}
-static __inline__ void ipxrtr_hold(struct ipx_route *rt)
+static inline void ipxrtr_hold(struct ipx_route *rt)
{
- atomic_inc(&rt->refcnt);
+ atomic_inc(&rt->refcnt);
}
-static __inline__ void ipxrtr_put(struct ipx_route *rt)
+static inline void ipxrtr_put(struct ipx_route *rt)
{
- if (atomic_dec_and_test(&rt->refcnt))
- kfree(rt);
+ if (atomic_dec_and_test(&rt->refcnt))
+ kfree(rt);
}
#endif /* _NET_INET_IPX_H_ */
Index: net-2.6/include/net/llc_c_ev.h
===================================================================
--- net-2.6.orig/include/net/llc_c_ev.h
+++ net-2.6/include/net/llc_c_ev.h
@@ -120,7 +120,7 @@ struct llc_conn_state_ev {
u8 cfm_prim;
};
-static __inline__ struct llc_conn_state_ev *llc_conn_ev(struct sk_buff *skb)
+static inline struct llc_conn_state_ev *llc_conn_ev(struct sk_buff *skb)
{
return (struct llc_conn_state_ev *)skb->cb;
}
@@ -261,7 +261,7 @@ extern int llc_conn_ev_qlfy_set_status_c
extern int llc_conn_ev_qlfy_set_status_rst_done(struct sock *sk,
struct sk_buff *skb);
-static __inline__ int llc_conn_space(struct sock *sk, struct sk_buff *skb)
+static inline int llc_conn_space(struct sock *sk, struct sk_buff *skb)
{
return atomic_read(&sk->sk_rmem_alloc) + skb->truesize <
(unsigned)sk->sk_rcvbuf;
Index: net-2.6/include/net/llc_conn.h
===================================================================
--- net-2.6.orig/include/net/llc_conn.h
+++ net-2.6/include/net/llc_conn.h
@@ -83,12 +83,12 @@ static inline struct llc_sock *llc_sk(co
return (struct llc_sock *)sk;
}
-static __inline__ void llc_set_backlog_type(struct sk_buff *skb, char type)
+static inline void llc_set_backlog_type(struct sk_buff *skb, char type)
{
skb->cb[sizeof(skb->cb) - 1] = type;
}
-static __inline__ char llc_backlog_type(struct sk_buff *skb)
+static inline char llc_backlog_type(struct sk_buff *skb)
{
return skb->cb[sizeof(skb->cb) - 1];
}
Index: net-2.6/include/net/llc_s_ev.h
===================================================================
--- net-2.6.orig/include/net/llc_s_ev.h
+++ net-2.6/include/net/llc_s_ev.h
@@ -44,7 +44,7 @@ struct llc_sap_state_ev {
struct llc_addr daddr;
};
-static __inline__ struct llc_sap_state_ev *llc_sap_ev(struct sk_buff *skb)
+static inline struct llc_sap_state_ev *llc_sap_ev(struct sk_buff *skb)
{
return (struct llc_sap_state_ev *)skb->cb;
}
Index: net-2.6/include/net/netrom.h
===================================================================
--- net-2.6.orig/include/net/netrom.h
+++ net-2.6/include/net/netrom.h
@@ -123,7 +123,7 @@ struct nr_node {
#define nr_node_hold(__nr_node) \
atomic_inc(&((__nr_node)->refcount))
-static __inline__ void nr_node_put(struct nr_node *nr_node)
+static inline void nr_node_put(struct nr_node *nr_node)
{
if (atomic_dec_and_test(&nr_node->refcount)) {
kfree(nr_node);
@@ -133,7 +133,7 @@ static __inline__ void nr_node_put(struc
#define nr_neigh_hold(__nr_neigh) \
atomic_inc(&((__nr_neigh)->refcount))
-static __inline__ void nr_neigh_put(struct nr_neigh *nr_neigh)
+static inline void nr_neigh_put(struct nr_neigh *nr_neigh)
{
if (atomic_dec_and_test(&nr_neigh->refcount)) {
kfree(nr_neigh->digipeat);
@@ -143,13 +143,13 @@ static __inline__ void nr_neigh_put(stru
/* nr_node_lock and nr_node_unlock also hold/put the node's refcounter.
*/
-static __inline__ void nr_node_lock(struct nr_node *nr_node)
+static inline void nr_node_lock(struct nr_node *nr_node)
{
nr_node_hold(nr_node);
spin_lock_bh(&nr_node->node_lock);
}
-static __inline__ void nr_node_unlock(struct nr_node *nr_node)
+static inline void nr_node_unlock(struct nr_node *nr_node)
{
spin_unlock_bh(&nr_node->node_lock);
nr_node_put(nr_node);
Index: net-2.6/include/net/scm.h
===================================================================
--- net-2.6.orig/include/net/scm.h
+++ net-2.6/include/net/scm.h
@@ -35,22 +35,24 @@ extern void __scm_destroy(struct scm_coo
extern struct scm_fp_list * scm_fp_dup(struct scm_fp_list *fpl);
#ifdef CONFIG_SECURITY_NETWORK
-static __inline__ void unix_get_peersec_dgram(struct socket *sock, struct scm_cookie *scm)
+static inline void unix_get_peersec_dgram(struct socket *sock,
+ struct scm_cookie *scm)
{
security_socket_getpeersec_dgram(sock, NULL, &scm->secid);
}
#else
-static __inline__ void unix_get_peersec_dgram(struct socket *sock, struct scm_cookie *scm)
+static inline void unix_get_peersec_dgram(struct socket *sock,
+ struct scm_cookie *scm)
{ }
#endif /* CONFIG_SECURITY_NETWORK */
-static __inline__ void scm_destroy(struct scm_cookie *scm)
+static inline void scm_destroy(struct scm_cookie *scm)
{
if (scm && scm->fp)
__scm_destroy(scm);
}
-static __inline__ int scm_send(struct socket *sock, struct msghdr *msg,
+static inline int scm_send(struct socket *sock, struct msghdr *msg,
struct scm_cookie *scm)
{
struct task_struct *p = current;
@@ -86,8 +88,8 @@ static inline void scm_passec(struct soc
{ }
#endif /* CONFIG_SECURITY_NETWORK */
-static __inline__ void scm_recv(struct socket *sock, struct msghdr *msg,
- struct scm_cookie *scm, int flags)
+static inline void scm_recv(struct socket *sock, struct msghdr *msg,
+ struct scm_cookie *scm, int flags)
{
if (!msg->msg_control)
{
Index: net-2.6/include/net/sock.h
===================================================================
--- net-2.6.orig/include/net/sock.h
+++ net-2.6/include/net/sock.h
@@ -302,17 +302,17 @@ static inline int sk_hashed(const struct
return !sk_unhashed(sk);
}
-static __inline__ void sk_node_init(struct hlist_node *node)
+static inline void sk_node_init(struct hlist_node *node)
{
node->pprev = NULL;
}
-static __inline__ void __sk_del_node(struct sock *sk)
+static inline void __sk_del_node(struct sock *sk)
{
__hlist_del(&sk->sk_node);
}
-static __inline__ int __sk_del_node_init(struct sock *sk)
+static inline int __sk_del_node_init(struct sock *sk)
{
if (sk_hashed(sk)) {
__sk_del_node(sk);
@@ -341,7 +341,7 @@ static inline void __sock_put(struct soc
atomic_dec(&sk->sk_refcnt);
}
-static __inline__ int sk_del_node_init(struct sock *sk)
+static inline int sk_del_node_init(struct sock *sk)
{
int rc = __sk_del_node_init(sk);
@@ -353,23 +353,23 @@ static __inline__ int sk_del_node_init(s
return rc;
}
-static __inline__ void __sk_add_node(struct sock *sk, struct hlist_head *list)
+static inline void __sk_add_node(struct sock *sk, struct hlist_head *list)
{
hlist_add_head(&sk->sk_node, list);
}
-static __inline__ void sk_add_node(struct sock *sk, struct hlist_head *list)
+static inline void sk_add_node(struct sock *sk, struct hlist_head *list)
{
sock_hold(sk);
__sk_add_node(sk, list);
}
-static __inline__ void __sk_del_bind_node(struct sock *sk)
+static inline void __sk_del_bind_node(struct sock *sk)
{
__hlist_del(&sk->sk_bind_node);
}
-static __inline__ void sk_add_bind_node(struct sock *sk,
+static inline void sk_add_bind_node(struct sock *sk,
struct hlist_head *list)
{
hlist_add_head(&sk->sk_bind_node, list);
@@ -1295,8 +1295,8 @@ static inline int sock_intr_errno(long t
extern void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk,
struct sk_buff *skb);
-static __inline__ void
-sock_recv_timestamp(struct msghdr *msg, struct sock *sk, struct sk_buff *skb)
+static inline void sock_recv_timestamp(struct msghdr *msg, struct sock *sk,
+ struct sk_buff *skb)
{
ktime_t kt = skb->tstamp;
Index: net-2.6/include/net/tcp.h
===================================================================
--- net-2.6.orig/include/net/tcp.h
+++ net-2.6/include/net/tcp.h
@@ -338,8 +338,8 @@ static inline void tcp_clear_options(str
#define TCP_ECN_QUEUE_CWR 2
#define TCP_ECN_DEMAND_CWR 4
-static __inline__ void
-TCP_ECN_create_request(struct request_sock *req, struct tcphdr *th)
+static inline void TCP_ECN_create_request(struct request_sock *req,
+ struct tcphdr *th)
{
if (sysctl_tcp_ecn && th->ece && th->cwr)
inet_rsk(req)->ecn_ok = 1;
@@ -776,7 +776,7 @@ extern __u32 tcp_init_cwnd(struct tcp_so
/* Slow start with delack produces 3 packets of burst, so that
* it is safe "de facto".
*/
-static __inline__ __u32 tcp_max_burst(const struct tcp_sock *tp)
+static inline __u32 tcp_max_burst(const struct tcp_sock *tp)
{
return 3;
}
Index: net-2.6/include/net/udplite.h
===================================================================
--- net-2.6.orig/include/net/udplite.h
+++ net-2.6/include/net/udplite.h
@@ -16,8 +16,8 @@ extern struct hlist_head udplite_hash[U
/*
* Checksum computation is all in software, hence simpler getfrag.
*/
-static __inline__ int udplite_getfrag(void *from, char *to, int offset,
- int len, int odd, struct sk_buff *skb)
+static inline int udplite_getfrag(void *from, char *to, int offset,
+ int len, int odd, struct sk_buff *skb)
{
return memcpy_fromiovecend(to, (struct iovec *) from, offset, len);
}
Index: net-2.6/include/net/x25.h
===================================================================
--- net-2.6.orig/include/net/x25.h
+++ net-2.6/include/net/x25.h
@@ -231,12 +231,12 @@ extern struct x25_neigh *x25_get_neigh(s
extern void x25_link_free(void);
/* x25_neigh.c */
-static __inline__ void x25_neigh_hold(struct x25_neigh *nb)
+static inline void x25_neigh_hold(struct x25_neigh *nb)
{
atomic_inc(&nb->refcnt);
}
-static __inline__ void x25_neigh_put(struct x25_neigh *nb)
+static inline void x25_neigh_put(struct x25_neigh *nb)
{
if (atomic_dec_and_test(&nb->refcnt))
kfree(nb);
@@ -254,12 +254,12 @@ extern void x25_route_device_down(struct
extern int x25_route_ioctl(unsigned int, void __user *);
extern void x25_route_free(void);
-static __inline__ void x25_route_hold(struct x25_route *rt)
+static inline void x25_route_hold(struct x25_route *rt)
{
atomic_inc(&rt->refcnt);
}
-static __inline__ void x25_route_put(struct x25_route *rt)
+static inline void x25_route_put(struct x25_route *rt)
{
if (atomic_dec_and_test(&rt->refcnt))
kfree(rt);
Index: net-2.6/include/net/xfrm.h
===================================================================
--- net-2.6.orig/include/net/xfrm.h
+++ net-2.6/include/net/xfrm.h
@@ -667,7 +667,7 @@ static inline void xfrm_state_hold(struc
atomic_inc(&x->refcnt);
}
-static __inline__ int addr_match(void *token1, void *token2, int prefixlen)
+static inline int addr_match(void *token1, void *token2, int prefixlen)
{
__be32 *a1 = token1;
__be32 *a2 = token2;
@@ -693,8 +693,7 @@ static __inline__ int addr_match(void *t
return 1;
}
-static __inline__
-__be16 xfrm_flowi_sport(struct flowi *fl)
+static inline __be16 xfrm_flowi_sport(struct flowi *fl)
{
__be16 port;
switch(fl->proto) {
@@ -717,8 +716,7 @@ __be16 xfrm_flowi_sport(struct flowi *fl
return port;
}
-static __inline__
-__be16 xfrm_flowi_dport(struct flowi *fl)
+static inline __be16 xfrm_flowi_dport(struct flowi *fl)
{
__be16 port;
switch(fl->proto) {
@@ -1016,8 +1014,8 @@ static inline int xfrm6_policy_check_rev
}
#endif
-static __inline__
-xfrm_address_t *xfrm_flowi_daddr(struct flowi *fl, unsigned short family)
+static inline xfrm_address_t *xfrm_flowi_daddr(struct flowi *fl,
+ unsigned short family)
{
switch (family){
case AF_INET:
@@ -1028,8 +1026,8 @@ xfrm_address_t *xfrm_flowi_daddr(struct
return NULL;
}
-static __inline__
-xfrm_address_t *xfrm_flowi_saddr(struct flowi *fl, unsigned short family)
+static inline xfrm_address_t *xfrm_flowi_saddr(struct flowi *fl,
+ unsigned short family)
{
switch (family){
case AF_INET:
@@ -1040,9 +1038,9 @@ xfrm_address_t *xfrm_flowi_saddr(struct
return NULL;
}
-static __inline__ int
-__xfrm4_state_addr_check(struct xfrm_state *x,
- xfrm_address_t *daddr, xfrm_address_t *saddr)
+static inline int __xfrm4_state_addr_check(struct xfrm_state *x,
+ xfrm_address_t *daddr,
+ xfrm_address_t *saddr)
{
if (daddr->a4 == x->id.daddr.a4 &&
(saddr->a4 == x->props.saddr.a4 || !saddr->a4 || !x->props.saddr.a4))
@@ -1050,9 +1048,9 @@ __xfrm4_state_addr_check(struct xfrm_sta
return 0;
}
-static __inline__ int
-__xfrm6_state_addr_check(struct xfrm_state *x,
- xfrm_address_t *daddr, xfrm_address_t *saddr)
+static inline int __xfrm6_state_addr_check(struct xfrm_state *x,
+ xfrm_address_t *daddr,
+ xfrm_address_t *saddr)
{
if (!ipv6_addr_cmp((struct in6_addr *)daddr, (struct in6_addr *)&x->id.daddr) &&
(!ipv6_addr_cmp((struct in6_addr *)saddr, (struct in6_addr *)&x->props.saddr)||
@@ -1062,10 +1060,10 @@ __xfrm6_state_addr_check(struct xfrm_sta
return 0;
}
-static __inline__ int
-xfrm_state_addr_check(struct xfrm_state *x,
- xfrm_address_t *daddr, xfrm_address_t *saddr,
- unsigned short family)
+static inline int xfrm_state_addr_check(struct xfrm_state *x,
+ xfrm_address_t *daddr,
+ xfrm_address_t *saddr,
+ unsigned short family)
{
switch (family) {
case AF_INET:
@@ -1076,9 +1074,9 @@ xfrm_state_addr_check(struct xfrm_state
return 0;
}
-static __inline__ int
-xfrm_state_addr_flow_check(struct xfrm_state *x, struct flowi *fl,
- unsigned short family)
+static inline int xfrm_state_addr_flow_check(struct xfrm_state *x,
+ struct flowi *fl,
+ unsigned short family)
{
switch (family) {
case AF_INET:
--
^ permalink raw reply
* Re: [e1000][net-2.6 tree] Regression: driver doesn't detect card on my node.
From: Pavel Emelyanov @ 2008-02-06 9:30 UTC (permalink / raw)
To: Yinghai Lu
Cc: Kok, Auke, e1000-devel, Linux Netdev List, jesse.brandeburg,
john.ronciak, Thomas Gleixner, jeffrey.t.kirsher, Denis Lunev,
Ingo Molnar, David Miller, Justin Piszcz
In-Reply-To: <200802060119.25278.yinghai.lu@sun.com>
Yinghai Lu wrote:
> On Wednesday 06 February 2008 12:41:15 am Pavel Emelyanov wrote:
>> Yinghai Lu wrote:
>>> On Tuesday 05 February 2008 11:10:24 pm Pavel Emelyanov wrote:
>>>> [snip]
>>>>
>>>>>>> What other info from me is required?
>>>>> boot log please. with the patch and reverting the patch.
>>>> Here they are (attached).
>>>> BTW, I found, that the sky2 adapter is broken by this patch as well.
>>>> To simplify the analysis, here's their diff:
>>>>
>>>> --- bad-log 2008-02-06 10:06:40.000000000 +0300
>>>> +++ good-log 2008-02-06 10:06:40.000000000 +0300
>>>> @@ -1,4 +1,4 @@
>>>> -Linux version 2.6.24 (pavel@xemulnb) (gcc version 4.1.3 20070724 (prerelease) (SUSE Linux)) #22 SMP Tue Feb 5 20:09:11 MSK 2008
>>>> +Linux version 2.6.24 (pavel@xemulnb) (gcc version 4.1.3 20070724 (prerelease) (SUSE Linux)) #23 SMP Wed Feb 6 10:03:53 MSK 2008
>>>> BIOS-provided physical RAM map:
>>>> BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
>>>> BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
>>>> @@ -19,29 +19,6 @@ Scan SMP from c0000000 for 1024 bytes.
>>>> Scan SMP from c009fc00 for 1024 bytes.
>>>> Scan SMP from c00f0000 for 65536 bytes.
>>>> found SMP MP-table at [c00ff780] 000ff780
>>>> -***************
>>>> -**** WARNING: likely BIOS bug
>>>> -**** MTRRs don't cover all of memory, trimmed 786432 pages
>>>> -***************
>>>> -update e820 for mtrr
>>>> -modified physical RAM map:
>>>> - modified: 0000000000000000 - 000000000009f800 (usable)
>>>> - modified: 000000000009f800 - 00000000000a0000 (reserved)
>>>> - modified: 00000000000e0000 - 0000000000100000 (reserved)
>>>> - modified: 0000000000100000 - 0000000040000000 (usable)
>>>> - modified: 0000000040000000 - 00000000bfff0000 (reserved)
>>>> - modified: 00000000bfff0000 - 00000000bffff000 (ACPI data)
>>>> - modified: 00000000bffff000 - 00000000c0000000 (ACPI NVS)
>>>> - modified: 00000000c0000000 - 0000000100000000 (reserved)
>>>> - modified: 0000000100000000 - 0000000140000000 (usable)
>>> the root cause could be your mtrr last entry for RAM has strange type
>>>
>>> please apply the following line to print the mtrr before trimming to current linus tree.
>> OK, here's the dmesg diff:
>> --- bad-log 2008-02-06 10:01:21.000000000 +0300
>> +++ bad-log-info 2008-02-06 11:37:51.000000000 +0300
>> @@ -19,6 +19,14 @@ Scan SMP from c0000000 for 1024 bytes.
>> Scan SMP from c009fc00 for 1024 bytes.
>> Scan SMP from c00f0000 for 65536 bytes.
>> found SMP MP-table at [c00ff780] 000ff780
>> +i=0 c0000 - 100000 0
>> +i=1 0 - 100000 6
>> +i=2 100000 - 140000 6
>> +i=3 0 - 0 0
>> +i=4 0 - 0 0
>> +i=5 0 - 0 0
>> +i=6 0 - 0 0
>> +i=7 0 - 0 0
>> ***************
>> **** WARNING: likely BIOS bug
>> **** MTRRs don't cover all of memory, trimmed 786432 pages
>
> please try following patch
Today's Linus tree works perfect with this patch, thanks :)
BTW, this also fixed the broken sky2 adapter.
> diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c
> index 1e27b69..4e7490f 100644
> --- a/arch/x86/kernel/cpu/mtrr/main.c
> +++ b/arch/x86/kernel/cpu/mtrr/main.c
> @@ -659,7 +659,7 @@ static __init int amd_special_default_mtrr(void)
> */
> int __init mtrr_trim_uncached_memory(unsigned long end_pfn)
> {
> - unsigned long i, base, size, highest_addr = 0, def, dummy;
> + unsigned long i, base, size, highest_pfn = 0, def, dummy;
> mtrr_type type;
> u64 trim_start, trim_size;
>
> @@ -682,28 +682,27 @@ int __init mtrr_trim_uncached_memory(unsigned long end_pfn)
> mtrr_if->get(i, &base, &size, &type);
> if (type != MTRR_TYPE_WRBACK)
> continue;
> - base <<= PAGE_SHIFT;
> - size <<= PAGE_SHIFT;
> - if (highest_addr < base + size)
> - highest_addr = base + size;
> + if (highest_pfn < base + size)
> + highest_pfn = base + size;
> }
>
> /* kvm/qemu doesn't have mtrr set right, don't trim them all */
> - if (!highest_addr) {
> + if (!highest_pfn) {
> printk(KERN_WARNING "WARNING: strange, CPU MTRRs all blank?\n");
> WARN_ON(1);
> return 0;
> }
>
> - if ((highest_addr >> PAGE_SHIFT) < end_pfn) {
> + if (highest_pfn < end_pfn) {
> printk(KERN_WARNING "WARNING: BIOS bug: CPU MTRRs don't cover"
> " all of memory, losing %LdMB of RAM.\n",
> - (((u64)end_pfn << PAGE_SHIFT) - highest_addr) >> 20);
> + (end_pfn - highest_pfn) >> (20 - PAGE_SHIFT));
>
> WARN_ON(1);
>
> printk(KERN_INFO "update e820 for mtrr\n");
> - trim_start = highest_addr;
> + trim_start = highest_pfn;
> + trim_start <<= PAGE_SHIFT;
> trim_size = end_pfn;
> trim_size <<= PAGE_SHIFT;
> trim_size -= trim_start;
>
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply
* [RESENT PATCH] mdiobus_register: check bus not being NULL before dereferencing it
From: Uwe Kleine-König @ 2008-02-06 9:39 UTC (permalink / raw)
To: netdev; +Cc: Uwe Kleine-König, Andy Fleming
From: Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
It doesn't make much sense to check for bus being NULL after using
bus->mdio_lock.
Signed-off-by: Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
Cc: Andy Fleming <afleming@freescale.com>
---
Hello,
I already sent this patch on November 7, 2007, but without any feedback.
This is rebased to current Linus' master to account for 35b5f6b1.
Best regards
Uwe
drivers/net/phy/mdio_bus.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c
index 6e9f619..963630c 100644
--- a/drivers/net/phy/mdio_bus.c
+++ b/drivers/net/phy/mdio_bus.c
@@ -49,13 +49,13 @@ int mdiobus_register(struct mii_bus *bus)
int i;
int err = 0;
- mutex_init(&bus->mdio_lock);
-
if (NULL == bus || NULL == bus->name ||
NULL == bus->read ||
NULL == bus->write)
return -EINVAL;
+ mutex_init(&bus->mdio_lock);
+
if (bus->reset)
bus->reset(bus);
--
1.5.3.8
^ permalink raw reply related
* [PATCH] x86_32: fix regression caused by trim ram according to mtrr on system with 4G more RAM
From: Yinghai Lu @ 2008-02-06 9:49 UTC (permalink / raw)
To: Ingo Molnar
Cc: Pavel Emelyanov, Kok, Auke, jesse.brandeburg, jeffrey.t.kirsher,
john.ronciak, David Miller, Linux Netdev List, e1000-devel,
Denis Lunev, Justin Piszcz, Thomas Gleixner,
Linux Kernel Mailing List
In-Reply-To: <47A97E28.1010400@openvz.org>
[PATCH] x86_32: fix regression caused by trim ram according to mtrr on system with 4G more RAM
Pravel report:
"
The commit
093af8d7f0ba3c6be1485973508584ef081e9f93
x86_32: trim memory by updating e820
broke my e1000 card: on loading driver says that
e1000: probe of 0000:04:03.0 failed with error -5
and the interface doesn't appear.
"
on 32 bit kernel, base will overflow when try to do PAGE_SHIFT.
and highest_addr will always less 4G.
so use pfn instead of address to avoid overflow when more than 4g
ram installed on 32bit kernel
Many thanks for Pavel Emelyanov to report and test it.
Signed-off-by: Yinghai Lu <yinghai.lu@sun.com>
Tested-by: Pavel Emelyanov <xemul@openvz.org>
diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c
index 1e27b69..4e7490f 100644
--- a/arch/x86/kernel/cpu/mtrr/main.c
+++ b/arch/x86/kernel/cpu/mtrr/main.c
@@ -659,7 +659,7 @@ static __init int amd_special_default_mtrr(void)
*/
int __init mtrr_trim_uncached_memory(unsigned long end_pfn)
{
- unsigned long i, base, size, highest_addr = 0, def, dummy;
+ unsigned long i, base, size, highest_pfn = 0, def, dummy;
mtrr_type type;
u64 trim_start, trim_size;
@@ -682,28 +682,27 @@ int __init mtrr_trim_uncached_memory(unsigned long end_pfn)
mtrr_if->get(i, &base, &size, &type);
if (type != MTRR_TYPE_WRBACK)
continue;
- base <<= PAGE_SHIFT;
- size <<= PAGE_SHIFT;
- if (highest_addr < base + size)
- highest_addr = base + size;
+ if (highest_pfn < base + size)
+ highest_pfn = base + size;
}
/* kvm/qemu doesn't have mtrr set right, don't trim them all */
- if (!highest_addr) {
+ if (!highest_pfn) {
printk(KERN_WARNING "WARNING: strange, CPU MTRRs all blank?\n");
WARN_ON(1);
return 0;
}
- if ((highest_addr >> PAGE_SHIFT) < end_pfn) {
+ if (highest_pfn < end_pfn) {
printk(KERN_WARNING "WARNING: BIOS bug: CPU MTRRs don't cover"
" all of memory, losing %LdMB of RAM.\n",
- (((u64)end_pfn << PAGE_SHIFT) - highest_addr) >> 20);
+ (end_pfn - highest_pfn) >> (20 - PAGE_SHIFT));
WARN_ON(1);
printk(KERN_INFO "update e820 for mtrr\n");
- trim_start = highest_addr;
+ trim_start = highest_pfn;
+ trim_start <<= PAGE_SHIFT;
trim_size = end_pfn;
trim_size <<= PAGE_SHIFT;
trim_size -= trim_start;
^ permalink raw reply related
* Re: [PATCH] x86_32: fix regression caused by trim ram according to mtrr on system with 4G more RAM
From: Ingo Molnar @ 2008-02-06 9:51 UTC (permalink / raw)
To: Yinghai Lu
Cc: Kok, Auke, e1000-devel, Linux Netdev List, jesse.brandeburg,
Linux Kernel Mailing List, john.ronciak, jeffrey.t.kirsher,
Denis Lunev, Thomas Gleixner, David Miller, Justin Piszcz,
Pavel Emelyanov
In-Reply-To: <200802060149.26083.yinghai.lu@sun.com>
* Yinghai Lu <Yinghai.Lu@Sun.COM> wrote:
> [PATCH] x86_32: fix regression caused by trim ram according to mtrr on system with 4G more RAM
>
> Pravel report:
> "
> The commit
>
> 093af8d7f0ba3c6be1485973508584ef081e9f93
> x86_32: trim memory by updating e820
>
> broke my e1000 card: on loading driver says that
>
> e1000: probe of 0000:04:03.0 failed with error -5
>
> and the interface doesn't appear.
> "
>
> on 32 bit kernel, base will overflow when try to do PAGE_SHIFT. and
> highest_addr will always less 4G.
>
> so use pfn instead of address to avoid overflow when more than 4g
> ram installed on 32bit kernel
> Many thanks for Pavel Emelyanov to report and test it.
thanks guys, applied.
Ingo
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply
* Re: [patch 14/14] replace __inline__ by inline in include/linux (net related)
From: YOSHIFUJI Hideaki / 吉藤英明 @ 2008-02-06 10:31 UTC (permalink / raw)
To: dlezcano; +Cc: davem, netdev, yoshfuji
In-Reply-To: <20080206092300.701741592@mai.toulouse-stg.fr.ibm.com>
In article <20080206092300.701741592@mai.toulouse-stg.fr.ibm.com> (at Wed, 06 Feb 2008 10:14:19 +0100), Daniel Lezcano <dlezcano@fr.ibm.com> says:
> replace __inline__ by inline in include/linux (net related)
>
> Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
> ---
> include/linux/atm.h | 4 ++--
> include/linux/atmsap.h | 2 +-
> include/linux/hdlc.h | 13 +++++++------
> include/linux/inetdevice.h | 14 ++++++--------
> include/linux/netlink.h | 5 +++--
> include/linux/rtnetlink.h | 2 +-
> 6 files changed, 20 insertions(+), 20 deletions(-)
Please do this change within the #ifdef __KERNEL__ .. #endif only.
--yoshfuji
^ permalink raw reply
* Re: [patch 14/14] replace __inline__ by inline in include/linux (net related)
From: Daniel Lezcano @ 2008-02-06 10:39 UTC (permalink / raw)
To: YOSHIFUJI Hideaki / 吉藤英明; +Cc: davem, netdev
In-Reply-To: <20080206.213100.60768610.yoshfuji@linux-ipv6.org>
YOSHIFUJI Hideaki / 吉藤英明 wrote:
> In article <20080206092300.701741592@mai.toulouse-stg.fr.ibm.com> (at Wed, 06 Feb 2008 10:14:19 +0100), Daniel Lezcano <dlezcano@fr.ibm.com> says:
>
>> replace __inline__ by inline in include/linux (net related)
>>
>> Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
>> ---
>> include/linux/atm.h | 4 ++--
>> include/linux/atmsap.h | 2 +-
>> include/linux/hdlc.h | 13 +++++++------
>> include/linux/inetdevice.h | 14 ++++++--------
>> include/linux/netlink.h | 5 +++--
>> include/linux/rtnetlink.h | 2 +-
>> 6 files changed, 20 insertions(+), 20 deletions(-)
>
> Please do this change within the #ifdef __KERNEL__ .. #endif only.
Oups ! I didn't thought about userspace program when modifying these
headers. Thanks for catching this.
Hopefully, the patches can be applied separately. Is it possible to
discard this one ?
^ permalink raw reply
* [PATCH 0/17] Finish IPv4 infrastructure namespacing
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: David Miller; +Cc: Linux Containers, netdev, devel
This set finally allows to manipulate with network devices inside a
namespace and allows to configure them [via netlink]. 'route' is not yet
supported (but prepared to).
Additionally, better routing cache support is added.
By the way, working ICMP is behind a couple of patches after this set :)
Signed-off-by: Denis V. Lunev <den@openvz.org>
^ permalink raw reply
* [PATCH 1/17] [IPV4]: Remove ifa != NULL check.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
This is a callback registered to inet address notifiers chains.
The check is useless as:
- ifa is always != NULL
- similar checks are abscent in all other notifiers.
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
drivers/net/via-velocity.c | 22 ++++++++++------------
1 files changed, 10 insertions(+), 12 deletions(-)
diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c
index 8c9fb82..7ff4509 100644
--- a/drivers/net/via-velocity.c
+++ b/drivers/net/via-velocity.c
@@ -3460,21 +3460,19 @@ static int velocity_resume(struct pci_dev *pdev)
static int velocity_netdev_event(struct notifier_block *nb, unsigned long notification, void *ptr)
{
struct in_ifaddr *ifa = (struct in_ifaddr *) ptr;
+ struct net_device *dev = ifa->ifa_dev->dev;
+ struct velocity_info *vptr;
+ unsigned long flags;
- if (ifa) {
- struct net_device *dev = ifa->ifa_dev->dev;
- struct velocity_info *vptr;
- unsigned long flags;
-
- spin_lock_irqsave(&velocity_dev_list_lock, flags);
- list_for_each_entry(vptr, &velocity_dev_list, list) {
- if (vptr->dev == dev) {
- velocity_get_ip(vptr);
- break;
- }
+ spin_lock_irqsave(&velocity_dev_list_lock, flags);
+ list_for_each_entry(vptr, &velocity_dev_list, list) {
+ if (vptr->dev == dev) {
+ velocity_get_ip(vptr);
+ break;
}
- spin_unlock_irqrestore(&velocity_dev_list_lock, flags);
}
+ spin_unlock_irqrestore(&velocity_dev_list_lock, flags);
+
return NOTIFY_DONE;
}
--
1.5.3.rc5
^ permalink raw reply related
* [PATCH 2/17] [IPV4]: Remove check for ifa->ifa_dev != NULL.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
This is a callback registered to inet address notifiers chains.
The check is useless as:
- ifa->ifa_dev is always != NULL
- similar checks are abscent in all other notifiers.
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
net/atm/clip.c | 4 ----
1 files changed, 0 insertions(+), 4 deletions(-)
diff --git a/net/atm/clip.c b/net/atm/clip.c
index 86b885e..dd96440 100644
--- a/net/atm/clip.c
+++ b/net/atm/clip.c
@@ -648,10 +648,6 @@ static int clip_inet_event(struct notifier_block *this, unsigned long event,
struct in_device *in_dev;
in_dev = ((struct in_ifaddr *)ifa)->ifa_dev;
- if (!in_dev || !in_dev->dev) {
- printk(KERN_WARNING "clip_inet_event: no device\n");
- return NOTIFY_DONE;
- }
/*
* Transitions are of the down-change-up type, so it's sufficient to
* handle the change on up.
--
1.5.3.rc5
^ permalink raw reply related
* [PATCH 3/17] [IPV4]: Consolidate masq_inet_event and masq_device_event.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
They do exactly the same job.
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
net/ipv4/netfilter/ipt_MASQUERADE.c | 14 ++------------
1 files changed, 2 insertions(+), 12 deletions(-)
diff --git a/net/ipv4/netfilter/ipt_MASQUERADE.c b/net/ipv4/netfilter/ipt_MASQUERADE.c
index d80fee8..313b3fc 100644
--- a/net/ipv4/netfilter/ipt_MASQUERADE.c
+++ b/net/ipv4/netfilter/ipt_MASQUERADE.c
@@ -139,18 +139,8 @@ static int masq_inet_event(struct notifier_block *this,
unsigned long event,
void *ptr)
{
- const struct net_device *dev = ((struct in_ifaddr *)ptr)->ifa_dev->dev;
-
- if (event == NETDEV_DOWN) {
- /* IP address was deleted. Search entire table for
- conntracks which were associated with that device,
- and forget them. */
- NF_CT_ASSERT(dev->ifindex != 0);
-
- nf_ct_iterate_cleanup(device_cmp, (void *)(long)dev->ifindex);
- }
-
- return NOTIFY_DONE;
+ struct net_device *dev = ((struct in_ifaddr *)ptr)->ifa_dev->dev;
+ return masq_device_event(this, event, dev);
}
static struct notifier_block masq_dev_notifier = {
--
1.5.3.rc5
^ permalink raw reply related
* [PATCH 5/17] [NETNS]: Register neighbour parameters of the net device in the correct namespace.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
neigh_sysctl_register should register sysctl entries inside correct namespace
to avoid naming conflict. Typical example is a loopback. Entries for it
present in all namespaces.
Required to make inetdev_event working.
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
net/core/neighbour.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/net/core/neighbour.c b/net/core/neighbour.c
index a16cf1e..1ed7b0a 100644
--- a/net/core/neighbour.c
+++ b/net/core/neighbour.c
@@ -2738,7 +2738,8 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
neigh_path[NEIGH_CTL_PATH_PROTO].procname = p_name;
neigh_path[NEIGH_CTL_PATH_PROTO].ctl_name = p_id;
- t->sysctl_header = register_sysctl_paths(neigh_path, t->neigh_vars);
+ t->sysctl_header =
+ register_net_sysctl_table(p->net, neigh_path, t->neigh_vars);
if (!t->sysctl_header)
goto free_procname;
--
1.5.3.rc5
^ permalink raw reply related
* [PATCH 6/17] [NETNS]: Default arp parameters lookup.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
Default ARP parameters should be findable regardless of the context.
Required to make inetdev_event working.
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
net/core/neighbour.c | 4 +---
1 files changed, 1 insertions(+), 3 deletions(-)
diff --git a/net/core/neighbour.c b/net/core/neighbour.c
index 1ed7b0a..ea44b8d 100644
--- a/net/core/neighbour.c
+++ b/net/core/neighbour.c
@@ -1281,9 +1281,7 @@ static inline struct neigh_parms *lookup_neigh_params(struct neigh_table *tbl,
struct neigh_parms *p;
for (p = &tbl->parms; p; p = p->next) {
- if (p->net != net)
- continue;
- if ((p->dev && p->dev->ifindex == ifindex) ||
+ if ((p->dev && p->dev->ifindex == ifindex && p->net == net) ||
(!p->dev && !ifindex))
return p;
}
--
1.5.3.rc5
^ permalink raw reply related
* [PATCH 4/17] [NETNS]: Disable address notifiers in namespaces other than initial.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
ip_fib_init is keeped enabled. It is already namespace-aware.
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
drivers/net/bonding/bond_main.c | 3 +++
drivers/net/via-velocity.c | 3 +++
drivers/s390/net/qeth_main.c | 3 +++
net/sctp/protocol.c | 3 +++
4 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 0942d82..9666434 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -3511,6 +3511,9 @@ static int bond_inetaddr_event(struct notifier_block *this, unsigned long event,
struct bonding *bond, *bond_next;
struct vlan_entry *vlan, *vlan_next;
+ if (ifa->ifa_dev->dev->nd_net != &init_net)
+ return NOTIFY_DONE;
+
list_for_each_entry_safe(bond, bond_next, &bond_dev_list, bond_list) {
if (bond->dev == event_dev) {
switch (event) {
diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c
index 7ff4509..d659834 100644
--- a/drivers/net/via-velocity.c
+++ b/drivers/net/via-velocity.c
@@ -3464,6 +3464,9 @@ static int velocity_netdev_event(struct notifier_block *nb, unsigned long notifi
struct velocity_info *vptr;
unsigned long flags;
+ if (dev->nd_net != &init_net)
+ return NOTIFY_DONE;
+
spin_lock_irqsave(&velocity_dev_list_lock, flags);
list_for_each_entry(vptr, &velocity_dev_list, list) {
if (vptr->dev == dev) {
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c
index 62606ce..d063e9e 100644
--- a/drivers/s390/net/qeth_main.c
+++ b/drivers/s390/net/qeth_main.c
@@ -8622,6 +8622,9 @@ qeth_ip_event(struct notifier_block *this,
struct qeth_ipaddr *addr;
struct qeth_card *card;
+ if (dev->nd_net != &init_net)
+ return NOTIFY_DONE;
+
QETH_DBF_TEXT(trace,3,"ipevent");
card = qeth_get_card_from_dev(dev);
if (!card)
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
index 1339742..20f7e4a 100644
--- a/net/sctp/protocol.c
+++ b/net/sctp/protocol.c
@@ -629,6 +629,9 @@ static int sctp_inetaddr_event(struct notifier_block *this, unsigned long ev,
struct sctp_sockaddr_entry *addr = NULL;
struct sctp_sockaddr_entry *temp;
+ if (ifa->ifa_dev->dev->nd_net != &init_net)
+ return NOTIFY_DONE;
+
switch (ev) {
case NETDEV_UP:
addr = kmalloc(sizeof(struct sctp_sockaddr_entry), GFP_ATOMIC);
--
1.5.3.rc5
^ permalink raw reply related
* [PATCH 8/17] [NETNS]: Enable inetdev_event notifier.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
After all these preparations it is time to enable main IPv4 device
initialization routine inside namespace. It is safe do this now.
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
net/ipv4/devinet.c | 3 ---
1 files changed, 0 insertions(+), 3 deletions(-)
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index a06fcae..f7e78b7 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -1044,9 +1044,6 @@ static int inetdev_event(struct notifier_block *this, unsigned long event,
struct net_device *dev = ptr;
struct in_device *in_dev = __in_dev_get_rtnl(dev);
- if (dev->nd_net != &init_net)
- return NOTIFY_DONE;
-
ASSERT_RTNL();
if (!in_dev) {
--
1.5.3.rc5
^ permalink raw reply related
* [PATCH 9/17] [NETNS]: DST cleanup routines should be called inside namespace.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
Device inside the namespace can be started and downed. So, active routing
cache should be cleaned up on device stop.
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
net/core/dst.c | 3 ---
1 files changed, 0 insertions(+), 3 deletions(-)
diff --git a/net/core/dst.c b/net/core/dst.c
index 7deef48..3a01a81 100644
--- a/net/core/dst.c
+++ b/net/core/dst.c
@@ -295,9 +295,6 @@ static int dst_dev_event(struct notifier_block *this, unsigned long event, void
struct net_device *dev = ptr;
struct dst_entry *dst, *last = NULL;
- if (dev->nd_net != &init_net)
- return NOTIFY_DONE;
-
switch (event) {
case NETDEV_UNREGISTER:
case NETDEV_DOWN:
--
1.5.3.rc5
^ permalink raw reply related
* [PATCH 10/17] [NETNS]: Process ip_rt_redirect in the correct namespace.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
net/ipv4/route.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 8842ecb..8a31e33 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -1132,10 +1132,12 @@ void ip_rt_redirect(__be32 old_gw, __be32 daddr, __be32 new_gw,
__be32 skeys[2] = { saddr, 0 };
int ikeys[2] = { dev->ifindex, 0 };
struct netevent_redirect netevent;
+ struct net *net;
if (!in_dev)
return;
+ net = dev->nd_net;
if (new_gw == old_gw || !IN_DEV_RX_REDIRECTS(in_dev)
|| ipv4_is_multicast(new_gw) || ipv4_is_lbcast(new_gw)
|| ipv4_is_zeronet(new_gw))
@@ -1147,7 +1149,7 @@ void ip_rt_redirect(__be32 old_gw, __be32 daddr, __be32 new_gw,
if (IN_DEV_SEC_REDIRECTS(in_dev) && ip_fib_check_default(new_gw, dev))
goto reject_redirect;
} else {
- if (inet_addr_type(&init_net, new_gw) != RTN_UNICAST)
+ if (inet_addr_type(net, new_gw) != RTN_UNICAST)
goto reject_redirect;
}
@@ -1165,7 +1167,8 @@ void ip_rt_redirect(__be32 old_gw, __be32 daddr, __be32 new_gw,
rth->fl.fl4_src != skeys[i] ||
rth->fl.oif != ikeys[k] ||
rth->fl.iif != 0 ||
- rth->rt_genid != atomic_read(&rt_genid)) {
+ rth->rt_genid != atomic_read(&rt_genid) ||
+ rth->u.dst.dev->nd_net != net) {
rthp = &rth->u.dst.rt_next;
continue;
}
--
1.5.3.rc5
^ permalink raw reply related
* [PATCH 7/17] [NETNS]: Disable multicaststing configuration inside namespace.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
Do not calls hooks from device notifiers and disallow configuration from
ioctl/netlink layer.
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
net/ipv4/igmp.c | 39 +++++++++++++++++++++++++++++++++++++++
1 files changed, 39 insertions(+), 0 deletions(-)
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
index 994648b..fe2e6cd 100644
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -1199,6 +1199,9 @@ void ip_mc_inc_group(struct in_device *in_dev, __be32 addr)
ASSERT_RTNL();
+ if (in_dev->dev->nd_net != &init_net)
+ return;
+
for (im=in_dev->mc_list; im; im=im->next) {
if (im->multiaddr == addr) {
im->users++;
@@ -1278,6 +1281,9 @@ void ip_mc_dec_group(struct in_device *in_dev, __be32 addr)
ASSERT_RTNL();
+ if (in_dev->dev->nd_net != &init_net)
+ return;
+
for (ip=&in_dev->mc_list; (i=*ip)!=NULL; ip=&i->next) {
if (i->multiaddr==addr) {
if (--i->users == 0) {
@@ -1305,6 +1311,9 @@ void ip_mc_down(struct in_device *in_dev)
ASSERT_RTNL();
+ if (in_dev->dev->nd_net != &init_net)
+ return;
+
for (i=in_dev->mc_list; i; i=i->next)
igmp_group_dropped(i);
@@ -1325,6 +1334,9 @@ void ip_mc_init_dev(struct in_device *in_dev)
{
ASSERT_RTNL();
+ if (in_dev->dev->nd_net != &init_net)
+ return;
+
in_dev->mc_tomb = NULL;
#ifdef CONFIG_IP_MULTICAST
in_dev->mr_gq_running = 0;
@@ -1348,6 +1360,9 @@ void ip_mc_up(struct in_device *in_dev)
ASSERT_RTNL();
+ if (in_dev->dev->nd_net != &init_net)
+ return;
+
ip_mc_inc_group(in_dev, IGMP_ALL_HOSTS);
for (i=in_dev->mc_list; i; i=i->next)
@@ -1364,6 +1379,9 @@ void ip_mc_destroy_dev(struct in_device *in_dev)
ASSERT_RTNL();
+ if (in_dev->dev->nd_net != &init_net)
+ return;
+
/* Deactivate timers */
ip_mc_down(in_dev);
@@ -1745,6 +1763,9 @@ int ip_mc_join_group(struct sock *sk , struct ip_mreqn *imr)
if (!ipv4_is_multicast(addr))
return -EINVAL;
+ if (sk->sk_net != &init_net)
+ return -EPROTONOSUPPORT;
+
rtnl_lock();
in_dev = ip_mc_find_dev(imr);
@@ -1813,6 +1834,9 @@ int ip_mc_leave_group(struct sock *sk, struct ip_mreqn *imr)
u32 ifindex;
int ret = -EADDRNOTAVAIL;
+ if (sk->sk_net != &init_net)
+ return -EPROTONOSUPPORT;
+
rtnl_lock();
in_dev = ip_mc_find_dev(imr);
ifindex = imr->imr_ifindex;
@@ -1858,6 +1882,9 @@ int ip_mc_source(int add, int omode, struct sock *sk, struct
if (!ipv4_is_multicast(addr))
return -EINVAL;
+ if (sk->sk_net != &init_net)
+ return -EPROTONOSUPPORT;
+
rtnl_lock();
imr.imr_multiaddr.s_addr = mreqs->imr_multiaddr;
@@ -1991,6 +2018,9 @@ int ip_mc_msfilter(struct sock *sk, struct ip_msfilter *msf, int ifindex)
msf->imsf_fmode != MCAST_EXCLUDE)
return -EINVAL;
+ if (sk->sk_net != &init_net)
+ return -EPROTONOSUPPORT;
+
rtnl_lock();
imr.imr_multiaddr.s_addr = msf->imsf_multiaddr;
@@ -2071,6 +2101,9 @@ int ip_mc_msfget(struct sock *sk, struct ip_msfilter *msf,
if (!ipv4_is_multicast(addr))
return -EINVAL;
+ if (sk->sk_net != &init_net)
+ return -EPROTONOSUPPORT;
+
rtnl_lock();
imr.imr_multiaddr.s_addr = msf->imsf_multiaddr;
@@ -2133,6 +2166,9 @@ int ip_mc_gsfget(struct sock *sk, struct group_filter *gsf,
if (!ipv4_is_multicast(addr))
return -EINVAL;
+ if (sk->sk_net != &init_net)
+ return -EPROTONOSUPPORT;
+
rtnl_lock();
err = -EADDRNOTAVAIL;
@@ -2217,6 +2253,9 @@ void ip_mc_drop_socket(struct sock *sk)
if (inet->mc_list == NULL)
return;
+ if (sk->sk_net != &init_net)
+ return;
+
rtnl_lock();
while ((iml = inet->mc_list) != NULL) {
struct in_device *in_dev;
--
1.5.3.rc5
^ permalink raw reply related
* [PATCH 12/17] [NETNS]: Process /proc/net/rt_cache inside a namespace.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
Show routing cache for a particular namespace only.
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
net/ipv4/route.c | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index b03de57..cc002d8 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -273,6 +273,7 @@ static unsigned int rt_hash_code(u32 daddr, u32 saddr)
#ifdef CONFIG_PROC_FS
struct rt_cache_iter_state {
+ struct seq_net_private p;
int bucket;
int genid;
};
@@ -285,7 +286,8 @@ static struct rtable *rt_cache_get_first(struct rt_cache_iter_state *st)
rcu_read_lock_bh();
r = rcu_dereference(rt_hash_table[st->bucket].chain);
while (r) {
- if (r->rt_genid == st->genid)
+ if (r->u.dst.dev->nd_net == st->p.net &&
+ r->rt_genid == st->genid)
return r;
r = rcu_dereference(r->u.dst.rt_next);
}
@@ -312,6 +314,8 @@ static struct rtable *rt_cache_get_next(struct rt_cache_iter_state *st,
struct rtable *r)
{
while ((r = __rt_cache_get_next(st, r)) != NULL) {
+ if (r->u.dst.dev->nd_net != st->p.net)
+ continue;
if (r->rt_genid == st->genid)
break;
}
@@ -398,7 +402,7 @@ static const struct seq_operations rt_cache_seq_ops = {
static int rt_cache_seq_open(struct inode *inode, struct file *file)
{
- return seq_open_private(file, &rt_cache_seq_ops,
+ return seq_open_net(inode, file, &rt_cache_seq_ops,
sizeof(struct rt_cache_iter_state));
}
@@ -407,7 +411,7 @@ static const struct file_operations rt_cache_seq_fops = {
.open = rt_cache_seq_open,
.read = seq_read,
.llseek = seq_lseek,
- .release = seq_release_private,
+ .release = seq_release_net,
};
--
1.5.3.rc5
^ permalink raw reply related
* [PATCH 11/17] [IPV4]: rt_cache_get_next should take rt_genid into account.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
In the other case /proc/net/rt_cache will look inconsistent in respect to
genid.
Signed-off-by: Denis V. Lunev <den@openvz.org>
Acked-by: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
---
net/ipv4/route.c | 18 +++++++++++++-----
1 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 92ff622..b03de57 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -294,7 +294,8 @@ static struct rtable *rt_cache_get_first(struct rt_cache_iter_state *st)
return r;
}
-static struct rtable *rt_cache_get_next(struct rt_cache_iter_state *st, struct rtable *r)
+static struct rtable *__rt_cache_get_next(struct rt_cache_iter_state *st,
+ struct rtable *r)
{
r = r->u.dst.rt_next;
while (!r) {
@@ -307,16 +308,23 @@ static struct rtable *rt_cache_get_next(struct rt_cache_iter_state *st, struct r
return rcu_dereference(r);
}
+static struct rtable *rt_cache_get_next(struct rt_cache_iter_state *st,
+ struct rtable *r)
+{
+ while ((r = __rt_cache_get_next(st, r)) != NULL) {
+ if (r->rt_genid == st->genid)
+ break;
+ }
+ return r;
+}
+
static struct rtable *rt_cache_get_idx(struct rt_cache_iter_state *st, loff_t pos)
{
struct rtable *r = rt_cache_get_first(st);
if (r)
- while (pos && (r = rt_cache_get_next(st, r))) {
- if (r->rt_genid != st->genid)
- continue;
+ while (pos && (r = rt_cache_get_next(st, r)))
--pos;
- }
return pos ? NULL : r;
}
--
1.5.3.rc5
^ permalink raw reply related
* [PATCH 13/17] [NETNS]: Register /proc/net/rt_cache for each namespace.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
net/ipv4/route.c | 24 +++++++++++++++++++++---
1 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index cc002d8..84da794 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -545,7 +545,7 @@ static int ip_rt_acct_read(char *buffer, char **start, off_t offset,
}
#endif
-static __init int ip_rt_proc_init(struct net *net)
+static int __net_init ip_rt_do_proc_init(struct net *net)
{
struct proc_dir_entry *pde;
@@ -577,8 +577,26 @@ err2:
err1:
return -ENOMEM;
}
+
+static void __net_exit ip_rt_do_proc_exit(struct net *net)
+{
+ remove_proc_entry("rt_cache", net->proc_net_stat);
+ remove_proc_entry("rt_cache", net->proc_net);
+ remove_proc_entry("rt_acct", net->proc_net);
+}
+
+static struct pernet_operations ip_rt_proc_ops __net_initdata = {
+ .init = ip_rt_do_proc_init,
+ .exit = ip_rt_do_proc_exit,
+};
+
+static int __init ip_rt_proc_init(void)
+{
+ return register_pernet_subsys(&ip_rt_proc_ops);
+}
+
#else
-static inline int ip_rt_proc_init(struct net *net)
+static inline int ip_rt_proc_init(void)
{
return 0;
}
@@ -3056,7 +3074,7 @@ int __init ip_rt_init(void)
ip_rt_secret_interval;
add_timer(&rt_secret_timer);
- if (ip_rt_proc_init(&init_net))
+ if (ip_rt_proc_init())
printk(KERN_ERR "Unable to create route proc files\n");
#ifdef CONFIG_XFRM
xfrm_init();
--
1.5.3.rc5
^ permalink raw reply related
* [PATCH 14/17] [NETNS]: Process devinet ioctl in the correct namespace.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
Add namespace parameter to devinet_ioctl and locate device inside it for
a state changes.
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
include/linux/inetdevice.h | 2 +-
net/ipv4/af_inet.c | 7 ++++---
net/ipv4/devinet.c | 6 +++---
net/ipv4/ipconfig.c | 2 +-
4 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h
index fc4e3db..da05ab4 100644
--- a/include/linux/inetdevice.h
+++ b/include/linux/inetdevice.h
@@ -129,7 +129,7 @@ extern int unregister_inetaddr_notifier(struct notifier_block *nb);
extern struct net_device *ip_dev_find(struct net *net, __be32 addr);
extern int inet_addr_onlink(struct in_device *in_dev, __be32 a, __be32 b);
-extern int devinet_ioctl(unsigned int cmd, void __user *);
+extern int devinet_ioctl(struct net *net, unsigned int cmd, void __user *);
extern void devinet_init(void);
extern struct in_device *inetdev_by_index(struct net *, int);
extern __be32 inet_select_addr(const struct net_device *dev, __be32 dst, int scope);
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index 09ca529..c270080 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -784,6 +784,7 @@ int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
{
struct sock *sk = sock->sk;
int err = 0;
+ struct net *net = sk->sk_net;
switch (cmd) {
case SIOCGSTAMP:
@@ -795,12 +796,12 @@ int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
case SIOCADDRT:
case SIOCDELRT:
case SIOCRTMSG:
- err = ip_rt_ioctl(sk->sk_net, cmd, (void __user *)arg);
+ err = ip_rt_ioctl(net, cmd, (void __user *)arg);
break;
case SIOCDARP:
case SIOCGARP:
case SIOCSARP:
- err = arp_ioctl(sk->sk_net, cmd, (void __user *)arg);
+ err = arp_ioctl(net, cmd, (void __user *)arg);
break;
case SIOCGIFADDR:
case SIOCSIFADDR:
@@ -813,7 +814,7 @@ int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
case SIOCSIFPFLAGS:
case SIOCGIFPFLAGS:
case SIOCSIFFLAGS:
- err = devinet_ioctl(cmd, (void __user *)arg);
+ err = devinet_ioctl(net, cmd, (void __user *)arg);
break;
default:
if (sk->sk_prot->ioctl)
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index f282b26..a06fcae 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -595,7 +595,7 @@ static __inline__ int inet_abc_len(__be32 addr)
}
-int devinet_ioctl(unsigned int cmd, void __user *arg)
+int devinet_ioctl(struct net *net, unsigned int cmd, void __user *arg)
{
struct ifreq ifr;
struct sockaddr_in sin_orig;
@@ -624,7 +624,7 @@ int devinet_ioctl(unsigned int cmd, void __user *arg)
*colon = 0;
#ifdef CONFIG_KMOD
- dev_load(&init_net, ifr.ifr_name);
+ dev_load(net, ifr.ifr_name);
#endif
switch (cmd) {
@@ -665,7 +665,7 @@ int devinet_ioctl(unsigned int cmd, void __user *arg)
rtnl_lock();
ret = -ENODEV;
- if ((dev = __dev_get_by_name(&init_net, ifr.ifr_name)) == NULL)
+ if ((dev = __dev_get_by_name(net, ifr.ifr_name)) == NULL)
goto done;
if (colon)
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
index a52b585..009d78f 100644
--- a/net/ipv4/ipconfig.c
+++ b/net/ipv4/ipconfig.c
@@ -291,7 +291,7 @@ static int __init ic_dev_ioctl(unsigned int cmd, struct ifreq *arg)
mm_segment_t oldfs = get_fs();
set_fs(get_ds());
- res = devinet_ioctl(cmd, (struct ifreq __user *) arg);
+ res = devinet_ioctl(&init_net, cmd, (struct ifreq __user *) arg);
set_fs(oldfs);
return res;
}
--
1.5.3.rc5
^ permalink raw reply related
* [PATCH 17/17] [NETNS]: Process inet_select_addr inside a namespace.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
The context is available from a network device passed in.
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
net/ipv4/devinet.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index aa23d10..d06a4e6 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -871,12 +871,14 @@ __be32 inet_select_addr(const struct net_device *dev, __be32 dst, int scope)
{
__be32 addr = 0;
struct in_device *in_dev;
+ struct net *net;
rcu_read_lock();
in_dev = __in_dev_get_rcu(dev);
if (!in_dev)
goto no_in_dev;
+ net = dev->nd_net;
for_primary_ifa(in_dev) {
if (ifa->ifa_scope > scope)
continue;
@@ -899,7 +901,7 @@ no_in_dev:
*/
read_lock(&dev_base_lock);
rcu_read_lock();
- for_each_netdev(&init_net, dev) {
+ for_each_netdev(net, dev) {
if ((in_dev = __in_dev_get_rcu(dev)) == NULL)
continue;
--
1.5.3.rc5
^ permalink raw reply related
* [PATCH 16/17] [NETNS]: Enable IPv4 address manipulations inside namespace.
From: Denis V. Lunev @ 2008-02-06 10:53 UTC (permalink / raw)
To: davem; +Cc: netdev, devel, containers, Denis V. Lunev
In-Reply-To: <47A99196.2030105@sw.ru>
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
net/ipv4/devinet.c | 9 ---------
1 files changed, 0 insertions(+), 9 deletions(-)
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index f7e78b7..aa23d10 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -446,9 +446,6 @@ static int inet_rtm_deladdr(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg
ASSERT_RTNL();
- if (net != &init_net)
- return -EINVAL;
-
err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFA_MAX, ifa_ipv4_policy);
if (err < 0)
goto errout;
@@ -560,9 +557,6 @@ static int inet_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg
ASSERT_RTNL();
- if (net != &init_net)
- return -EINVAL;
-
ifa = rtm_to_ifaddr(net, nlh);
if (IS_ERR(ifa))
return PTR_ERR(ifa);
@@ -1169,9 +1163,6 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb)
struct in_ifaddr *ifa;
int s_ip_idx, s_idx = cb->args[0];
- if (net != &init_net)
- return 0;
-
s_ip_idx = ip_idx = cb->args[1];
idx = 0;
for_each_netdev(net, dev) {
--
1.5.3.rc5
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox