diff mbox

[1/1] IPVS: seq_release_net should be used.

Message ID 1305266600-21507-1-git-send-email-hans.schillstrom@ericsson.com
State Not Applicable, archived
Delegated to: David Miller
Headers show

Commit Message

Hans Schillstrom May 13, 2011, 6:03 a.m. UTC
Without this patch every access to ip_vs in procfs will increase
the netns count i.e. an unbalanced get_net()/put_net().
(ipvsadm commands also use procfs.)
The result is you can't exit a netns if reading ip_vs_* procfs entries.

Signed-off-by: Hans Schillstrom <hans.schillstrom@ericsson.com>
---
 net/netfilter/ipvs/ip_vs_app.c  |    2 +-
 net/netfilter/ipvs/ip_vs_conn.c |    4 ++--
 net/netfilter/ipvs/ip_vs_ctl.c  |    6 +++---
 3 files changed, 6 insertions(+), 6 deletions(-)

Comments

Simon Horman May 14, 2011, 12:50 a.m. UTC | #1
On Fri, May 13, 2011 at 08:03:20AM +0200, Hans Schillstrom wrote:
> Without this patch every access to ip_vs in procfs will increase
> the netns count i.e. an unbalanced get_net()/put_net().
> (ipvsadm commands also use procfs.)
> The result is you can't exit a netns if reading ip_vs_* procfs entries.

Hi Hans,

we should try and get this into 2.6.39, right?

> 
> Signed-off-by: Hans Schillstrom <hans.schillstrom@ericsson.com>
> ---
>  net/netfilter/ipvs/ip_vs_app.c  |    2 +-
>  net/netfilter/ipvs/ip_vs_conn.c |    4 ++--
>  net/netfilter/ipvs/ip_vs_ctl.c  |    6 +++---
>  3 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/net/netfilter/ipvs/ip_vs_app.c b/net/netfilter/ipvs/ip_vs_app.c
> index 51f3af7..059af31 100644
> --- a/net/netfilter/ipvs/ip_vs_app.c
> +++ b/net/netfilter/ipvs/ip_vs_app.c
> @@ -572,7 +572,7 @@ static const struct file_operations ip_vs_app_fops = {
>  	.open	 = ip_vs_app_open,
>  	.read	 = seq_read,
>  	.llseek  = seq_lseek,
> -	.release = seq_release,
> +	.release = seq_release_net,
>  };
>  #endif
>  
> diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c
> index d3fd91b..bf28ac2 100644
> --- a/net/netfilter/ipvs/ip_vs_conn.c
> +++ b/net/netfilter/ipvs/ip_vs_conn.c
> @@ -1046,7 +1046,7 @@ static const struct file_operations ip_vs_conn_fops = {
>  	.open    = ip_vs_conn_open,
>  	.read    = seq_read,
>  	.llseek  = seq_lseek,
> -	.release = seq_release,
> +	.release = seq_release_net,
>  };
>  
>  static const char *ip_vs_origin_name(unsigned flags)
> @@ -1114,7 +1114,7 @@ static const struct file_operations ip_vs_conn_sync_fops = {
>  	.open    = ip_vs_conn_sync_open,
>  	.read    = seq_read,
>  	.llseek  = seq_lseek,
> -	.release = seq_release,
> +	.release = seq_release_net,
>  };
>  
>  #endif
> diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
> index 89842f0..699c79a 100644
> --- a/net/netfilter/ipvs/ip_vs_ctl.c
> +++ b/net/netfilter/ipvs/ip_vs_ctl.c
> @@ -2066,7 +2066,7 @@ static const struct file_operations ip_vs_info_fops = {
>  	.open    = ip_vs_info_open,
>  	.read    = seq_read,
>  	.llseek  = seq_lseek,
> -	.release = seq_release_private,
> +	.release = seq_release_net,
>  };
>  
>  static int ip_vs_stats_show(struct seq_file *seq, void *v)
> @@ -2106,7 +2106,7 @@ static const struct file_operations ip_vs_stats_fops = {
>  	.open = ip_vs_stats_seq_open,
>  	.read = seq_read,
>  	.llseek = seq_lseek,
> -	.release = single_release,
> +	.release = single_release_net,
>  };
>  
>  static int ip_vs_stats_percpu_show(struct seq_file *seq, void *v)
> @@ -2175,7 +2175,7 @@ static const struct file_operations ip_vs_stats_percpu_fops = {
>  	.open = ip_vs_stats_percpu_seq_open,
>  	.read = seq_read,
>  	.llseek = seq_lseek,
> -	.release = single_release,
> +	.release = single_release_net,
>  };
>  #endif
>  
> -- 
> 1.7.2.3
> 
> --
> To unsubscribe from this list: send the line "unsubscribe lvs-devel" 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
Hans Schillstrom May 14, 2011, 10:05 a.m. UTC | #2
On Saturday, May 14, 2011 02:50:26 Simon Horman wrote:
> On Fri, May 13, 2011 at 08:03:20AM +0200, Hans Schillstrom wrote:
> > Without this patch every access to ip_vs in procfs will increase
> > the netns count i.e. an unbalanced get_net()/put_net().
> > (ipvsadm commands also use procfs.)
> > The result is you can't exit a netns if reading ip_vs_* procfs entries.
> 
> Hi Hans,
> 
> we should try and get this into 2.6.39, right?

Yes, this is a trivial bug fix

> 
> > 
> > Signed-off-by: Hans Schillstrom <hans.schillstrom@ericsson.com>
> > ---
> >  net/netfilter/ipvs/ip_vs_app.c  |    2 +-
> >  net/netfilter/ipvs/ip_vs_conn.c |    4 ++--
> >  net/netfilter/ipvs/ip_vs_ctl.c  |    6 +++---
> >  3 files changed, 6 insertions(+), 6 deletions(-)
> > 
> > diff --git a/net/netfilter/ipvs/ip_vs_app.c b/net/netfilter/ipvs/ip_vs_app.c
> > index 51f3af7..059af31 100644
> > --- a/net/netfilter/ipvs/ip_vs_app.c
> > +++ b/net/netfilter/ipvs/ip_vs_app.c
> > @@ -572,7 +572,7 @@ static const struct file_operations ip_vs_app_fops = {
> >  	.open	 = ip_vs_app_open,
> >  	.read	 = seq_read,
> >  	.llseek  = seq_lseek,
> > -	.release = seq_release,
> > +	.release = seq_release_net,
> >  };
> >  #endif
> >  
> > diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c
> > index d3fd91b..bf28ac2 100644
> > --- a/net/netfilter/ipvs/ip_vs_conn.c
> > +++ b/net/netfilter/ipvs/ip_vs_conn.c
> > @@ -1046,7 +1046,7 @@ static const struct file_operations ip_vs_conn_fops = {
> >  	.open    = ip_vs_conn_open,
> >  	.read    = seq_read,
> >  	.llseek  = seq_lseek,
> > -	.release = seq_release,
> > +	.release = seq_release_net,
> >  };
> >  
> >  static const char *ip_vs_origin_name(unsigned flags)
> > @@ -1114,7 +1114,7 @@ static const struct file_operations ip_vs_conn_sync_fops = {
> >  	.open    = ip_vs_conn_sync_open,
> >  	.read    = seq_read,
> >  	.llseek  = seq_lseek,
> > -	.release = seq_release,
> > +	.release = seq_release_net,
> >  };
> >  
> >  #endif
> > diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
> > index 89842f0..699c79a 100644
> > --- a/net/netfilter/ipvs/ip_vs_ctl.c
> > +++ b/net/netfilter/ipvs/ip_vs_ctl.c
> > @@ -2066,7 +2066,7 @@ static const struct file_operations ip_vs_info_fops = {
> >  	.open    = ip_vs_info_open,
> >  	.read    = seq_read,
> >  	.llseek  = seq_lseek,
> > -	.release = seq_release_private,
> > +	.release = seq_release_net,
> >  };
> >  
> >  static int ip_vs_stats_show(struct seq_file *seq, void *v)
> > @@ -2106,7 +2106,7 @@ static const struct file_operations ip_vs_stats_fops = {
> >  	.open = ip_vs_stats_seq_open,
> >  	.read = seq_read,
> >  	.llseek = seq_lseek,
> > -	.release = single_release,
> > +	.release = single_release_net,
> >  };
> >  
> >  static int ip_vs_stats_percpu_show(struct seq_file *seq, void *v)
> > @@ -2175,7 +2175,7 @@ static const struct file_operations ip_vs_stats_percpu_fops = {
> >  	.open = ip_vs_stats_percpu_seq_open,
> >  	.read = seq_read,
> >  	.llseek = seq_lseek,
> > -	.release = single_release,
> > +	.release = single_release_net,
> >  };
> >  #endif
> >  
> 
--
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
Pablo Neira Ayuso May 15, 2011, 3:12 p.m. UTC | #3
On 14/05/11 12:05, Hans Schillstrom wrote:
> On Saturday, May 14, 2011 02:50:26 Simon Horman wrote:
>> On Fri, May 13, 2011 at 08:03:20AM +0200, Hans Schillstrom wrote:
>>> Without this patch every access to ip_vs in procfs will increase
>>> the netns count i.e. an unbalanced get_net()/put_net().
>>> (ipvsadm commands also use procfs.)
>>> The result is you can't exit a netns if reading ip_vs_* procfs entries.
>>
>> Hi Hans,
>>
>> we should try and get this into 2.6.39, right?
> 
> Yes, this is a trivial bug fix

I'll pass it to davem.
--
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
diff mbox

Patch

diff --git a/net/netfilter/ipvs/ip_vs_app.c b/net/netfilter/ipvs/ip_vs_app.c
index 51f3af7..059af31 100644
--- a/net/netfilter/ipvs/ip_vs_app.c
+++ b/net/netfilter/ipvs/ip_vs_app.c
@@ -572,7 +572,7 @@  static const struct file_operations ip_vs_app_fops = {
 	.open	 = ip_vs_app_open,
 	.read	 = seq_read,
 	.llseek  = seq_lseek,
-	.release = seq_release,
+	.release = seq_release_net,
 };
 #endif
 
diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c
index d3fd91b..bf28ac2 100644
--- a/net/netfilter/ipvs/ip_vs_conn.c
+++ b/net/netfilter/ipvs/ip_vs_conn.c
@@ -1046,7 +1046,7 @@  static const struct file_operations ip_vs_conn_fops = {
 	.open    = ip_vs_conn_open,
 	.read    = seq_read,
 	.llseek  = seq_lseek,
-	.release = seq_release,
+	.release = seq_release_net,
 };
 
 static const char *ip_vs_origin_name(unsigned flags)
@@ -1114,7 +1114,7 @@  static const struct file_operations ip_vs_conn_sync_fops = {
 	.open    = ip_vs_conn_sync_open,
 	.read    = seq_read,
 	.llseek  = seq_lseek,
-	.release = seq_release,
+	.release = seq_release_net,
 };
 
 #endif
diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
index 89842f0..699c79a 100644
--- a/net/netfilter/ipvs/ip_vs_ctl.c
+++ b/net/netfilter/ipvs/ip_vs_ctl.c
@@ -2066,7 +2066,7 @@  static const struct file_operations ip_vs_info_fops = {
 	.open    = ip_vs_info_open,
 	.read    = seq_read,
 	.llseek  = seq_lseek,
-	.release = seq_release_private,
+	.release = seq_release_net,
 };
 
 static int ip_vs_stats_show(struct seq_file *seq, void *v)
@@ -2106,7 +2106,7 @@  static const struct file_operations ip_vs_stats_fops = {
 	.open = ip_vs_stats_seq_open,
 	.read = seq_read,
 	.llseek = seq_lseek,
-	.release = single_release,
+	.release = single_release_net,
 };
 
 static int ip_vs_stats_percpu_show(struct seq_file *seq, void *v)
@@ -2175,7 +2175,7 @@  static const struct file_operations ip_vs_stats_percpu_fops = {
 	.open = ip_vs_stats_percpu_seq_open,
 	.read = seq_read,
 	.llseek = seq_lseek,
-	.release = single_release,
+	.release = single_release_net,
 };
 #endif