diff mbox series

[nf] netfilter: nf_tables_offload: Fix check the NETDEV_UNREGISTER in netdev event

Message ID 1573618867-9755-1-git-send-email-wenxu@ucloud.cn
State Awaiting Upstream
Delegated to: Pablo Neira
Headers show
Series [nf] netfilter: nf_tables_offload: Fix check the NETDEV_UNREGISTER in netdev event | expand

Commit Message

wenxu Nov. 13, 2019, 4:21 a.m. UTC
From: wenxu <wenxu@ucloud.cn>

It should check the NETDEV_UNREGISTER in  nft_offload_netdev_event

Fixes: 06d392cbe3db ("netfilter: nf_tables_offload: remove rules when the device unregisters")
Signed-off-by: wenxu <wenxu@ucloud.cn>
---
 net/netfilter/nf_tables_offload.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

wenxu Dec. 2, 2019, 3:16 a.m. UTC | #1
Hi pablo,


Any comments about this patch?


BR

wenxu

On 11/13/2019 12:21 PM, wenxu@ucloud.cn wrote:
> From: wenxu <wenxu@ucloud.cn>
>
> It should check the NETDEV_UNREGISTER in  nft_offload_netdev_event
>
> Fixes: 06d392cbe3db ("netfilter: nf_tables_offload: remove rules when the device unregisters")
> Signed-off-by: wenxu <wenxu@ucloud.cn>
> ---
>  net/netfilter/nf_tables_offload.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/net/netfilter/nf_tables_offload.c b/net/netfilter/nf_tables_offload.c
> index e25dab8..b002832 100644
> --- a/net/netfilter/nf_tables_offload.c
> +++ b/net/netfilter/nf_tables_offload.c
> @@ -446,6 +446,9 @@ static int nft_offload_netdev_event(struct notifier_block *this,
>  	struct net *net = dev_net(dev);
>  	struct nft_chain *chain;
>  
> +	if (event != NETDEV_UNREGISTER)
> +		return 0;
> +
>  	mutex_lock(&net->nft.commit_mutex);
>  	chain = __nft_offload_get_chain(dev);
>  	if (chain)
Pablo Neira Ayuso Dec. 2, 2019, 9:21 a.m. UTC | #2
On Wed, Nov 13, 2019 at 12:21:07PM +0800, wenxu@ucloud.cn wrote:
> From: wenxu <wenxu@ucloud.cn>
> 
> It should check the NETDEV_UNREGISTER in  nft_offload_netdev_event

Applied, thanks.
Pablo Neira Ayuso Dec. 2, 2019, 9:23 a.m. UTC | #3
On Wed, Nov 13, 2019 at 12:21:07PM +0800, wenxu@ucloud.cn wrote:
> From: wenxu <wenxu@ucloud.cn>
> 
> It should check the NETDEV_UNREGISTER in  nft_offload_netdev_event
> 
> Fixes: 06d392cbe3db ("netfilter: nf_tables_offload: remove rules when the device unregisters")
> Signed-off-by: wenxu <wenxu@ucloud.cn>
> ---
>  net/netfilter/nf_tables_offload.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/net/netfilter/nf_tables_offload.c b/net/netfilter/nf_tables_offload.c
> index e25dab8..b002832 100644
> --- a/net/netfilter/nf_tables_offload.c
> +++ b/net/netfilter/nf_tables_offload.c
> @@ -446,6 +446,9 @@ static int nft_offload_netdev_event(struct notifier_block *this,
>  	struct net *net = dev_net(dev);
>  	struct nft_chain *chain;
>  
> +	if (event != NETDEV_UNREGISTER)
> +		return 0;

Actually I cannot apply this.

        if (event != NETDEV_UNREGISTER &&
            event != NETDEV_CHANGENAME)
                return NOTIFY_DONE;

You also have to check for change name and use NOTIFY_DONE as return
value instead. Sorry.
Pablo Neira Ayuso Dec. 2, 2019, 9:25 a.m. UTC | #4
On Mon, Dec 02, 2019 at 10:23:10AM +0100, Pablo Neira Ayuso wrote:
> On Wed, Nov 13, 2019 at 12:21:07PM +0800, wenxu@ucloud.cn wrote:
> > From: wenxu <wenxu@ucloud.cn>
> > 
> > It should check the NETDEV_UNREGISTER in  nft_offload_netdev_event
> > 
> > Fixes: 06d392cbe3db ("netfilter: nf_tables_offload: remove rules when the device unregisters")
> > Signed-off-by: wenxu <wenxu@ucloud.cn>
> > ---
> >  net/netfilter/nf_tables_offload.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/net/netfilter/nf_tables_offload.c b/net/netfilter/nf_tables_offload.c
> > index e25dab8..b002832 100644
> > --- a/net/netfilter/nf_tables_offload.c
> > +++ b/net/netfilter/nf_tables_offload.c
> > @@ -446,6 +446,9 @@ static int nft_offload_netdev_event(struct notifier_block *this,
> >  	struct net *net = dev_net(dev);
> >  	struct nft_chain *chain;
> >  
> > +	if (event != NETDEV_UNREGISTER)
> > +		return 0;
> 
> Actually I cannot apply this.
> 
>         if (event != NETDEV_UNREGISTER &&
>             event != NETDEV_CHANGENAME)
>                 return NOTIFY_DONE;
> 
> You also have to check for change name and use NOTIFY_DONE as return
> value instead. Sorry.

It's only NOTIFY_DONE that is missing.

I'll mangle this patch and apply, no need to send a new version.
diff mbox series

Patch

diff --git a/net/netfilter/nf_tables_offload.c b/net/netfilter/nf_tables_offload.c
index e25dab8..b002832 100644
--- a/net/netfilter/nf_tables_offload.c
+++ b/net/netfilter/nf_tables_offload.c
@@ -446,6 +446,9 @@  static int nft_offload_netdev_event(struct notifier_block *this,
 	struct net *net = dev_net(dev);
 	struct nft_chain *chain;
 
+	if (event != NETDEV_UNREGISTER)
+		return 0;
+
 	mutex_lock(&net->nft.commit_mutex);
 	chain = __nft_offload_get_chain(dev);
 	if (chain)