Message ID | 1375774371-831-3-git-send-email-sakiwit@gmail.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
On 08/06/2013 09:32 AM, Jean Sacren wrote: > In commit 900ff8c6 ("net: move procfs code to net/core/net-procfs.c"), > it changed the correct linkage of ptype_base and ptype_all symbols to > the wrong one in net/core/dev.c, yet failed to change to the correct > linkage of those two in net/core/net-procfs.c. > > Fix the wrong linkage by setting static specifier to both sets of the > symbols so that they could have coherent internal linkage by themselves > to avoid interference with each other. Ho? I do not think this is correct, what makes you think so? The net-procfs.c usage of ptype_* is there to show current pf_packet users via seq_files in procfs. Your patch will just break this. > Signed-off-by: Jean Sacren <sakiwit@gmail.com> > --- > net/core/dev.c | 4 ++-- > net/core/net-procfs.c | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/net/core/dev.c b/net/core/dev.c > index dfd9f5d..d85e5e1 100644 > --- a/net/core/dev.c > +++ b/net/core/dev.c > @@ -142,8 +142,8 @@ > > static DEFINE_SPINLOCK(ptype_lock); > static DEFINE_SPINLOCK(offload_lock); > -struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly; > -struct list_head ptype_all __read_mostly; /* Taps */ > +static struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly; > +static struct list_head ptype_all __read_mostly; /* Taps */ > static struct list_head offload_base __read_mostly; > > /* > diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c > index 2bf8329..e57cd63 100644 > --- a/net/core/net-procfs.c > +++ b/net/core/net-procfs.c > @@ -9,8 +9,8 @@ > #define get_offset(x) ((x) & ((1 << BUCKET_SPACE) - 1)) > #define set_bucket_offset(b, o) ((b) << BUCKET_SPACE | (o)) > > -extern struct list_head ptype_all __read_mostly; > -extern struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly; > +static struct list_head ptype_all __read_mostly; > +static struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly; > > static inline struct net_device *dev_from_same_bucket(struct seq_file *seq, loff_t *pos) > { > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Daniel Borkmann <dborkman@redhat.com> Date: Tue, 06 Aug 2013 10:13:15 +0200 > > On 08/06/2013 09:32 AM, Jean Sacren wrote: > > In commit 900ff8c6 ("net: move procfs code to net/core/net-procfs.c"), > > it changed the correct linkage of ptype_base and ptype_all symbols to > > the wrong one in net/core/dev.c, yet failed to change to the correct > > linkage of those two in net/core/net-procfs.c. > > > > Fix the wrong linkage by setting static specifier to both sets of the > > symbols so that they could have coherent internal linkage by themselves > > to avoid interference with each other. > > Ho? I do not think this is correct, what makes you think so? Thank you for the awesome comment. I'm sorry to tell you but the patch is correct. Both symbols of ptype_{base,all} were wrongly declared as extern in net-procfs.c in the first place. > The net-procfs.c usage of ptype_* is there to show current pf_packet users > via seq_files in procfs. Your patch will just break this. I validated it before I submitted the patch that all the symbols of ptype_{base,all} are used exclusively in net/core/net-procfs.c and net/core/dev.c but not outside of those two places. Therefore, your assumption for breakage is groundless. As a kernel networking guru as you are, you shall have the lab and all sorts of test cases to validate patches. I'd love to run this type of testing by myself, but I don't have such resources. If you could test this patch in any of your setup and prove that I'm wrong, I'd extremely appreciate it. Thank you in advance. I'm looking forward to being taught more.
On Tue, 2013-08-06 at 14:45 -0600, Jean Sacren wrote: > I'm sorry to tell you but the patch is correct. Both symbols of > ptype_{base,all} were wrongly declared as extern in net-procfs.c in the > first place. You are mistaken. > > The net-procfs.c usage of ptype_* is there to show current pf_packet users > > via seq_files in procfs. Your patch will just break this. > > I validated it before I submitted the patch that all the symbols of > ptype_{base,all} are used exclusively in net/core/net-procfs.c and > net/core/dev.c but not outside of those two places. Therefore, your > assumption for breakage is groundless. > > As a kernel networking guru as you are, you shall have the lab and all > sorts of test cases to validate patches. I'd love to run this type of > testing by myself, but I don't have such resources. If you could test > this patch in any of your setup and prove that I'm wrong, I'd extremely > appreciate it. Thank you in advance. > > I'm looking forward to being taught more. > Well, the patch is wrong, for sure, and you cannot ask us to test your patches. Do not send patches that you cannot test yourself, please. Try this before/after your patch cat /proc/net/ptype -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Tue, 06 Aug 2013 14:06:41 -0700 > > On Tue, 2013-08-06 at 14:45 -0600, Jean Sacren wrote: > > > I'm sorry to tell you but the patch is correct. Both symbols of > > ptype_{base,all} were wrongly declared as extern in net-procfs.c in the > > first place. > > You are mistaken. Sorry for the big mistake.
diff --git a/net/core/dev.c b/net/core/dev.c index dfd9f5d..d85e5e1 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -142,8 +142,8 @@ static DEFINE_SPINLOCK(ptype_lock); static DEFINE_SPINLOCK(offload_lock); -struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly; -struct list_head ptype_all __read_mostly; /* Taps */ +static struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly; +static struct list_head ptype_all __read_mostly; /* Taps */ static struct list_head offload_base __read_mostly; /* diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c index 2bf8329..e57cd63 100644 --- a/net/core/net-procfs.c +++ b/net/core/net-procfs.c @@ -9,8 +9,8 @@ #define get_offset(x) ((x) & ((1 << BUCKET_SPACE) - 1)) #define set_bucket_offset(b, o) ((b) << BUCKET_SPACE | (o)) -extern struct list_head ptype_all __read_mostly; -extern struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly; +static struct list_head ptype_all __read_mostly; +static struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly; static inline struct net_device *dev_from_same_bucket(struct seq_file *seq, loff_t *pos) {
In commit 900ff8c6 ("net: move procfs code to net/core/net-procfs.c"), it changed the correct linkage of ptype_base and ptype_all symbols to the wrong one in net/core/dev.c, yet failed to change to the correct linkage of those two in net/core/net-procfs.c. Fix the wrong linkage by setting static specifier to both sets of the symbols so that they could have coherent internal linkage by themselves to avoid interference with each other. Signed-off-by: Jean Sacren <sakiwit@gmail.com> --- net/core/dev.c | 4 ++-- net/core/net-procfs.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html