team: fix releasing uninitialized pointer to BPF prog
authorDaniel Borkmann <dborkman@redhat.com>
Thu, 31 Jul 2014 19:48:59 +0000 (21:48 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 31 Jul 2014 20:10:02 +0000 (13:10 -0700)
Commit 34c5bd66e5ed introduced the possibility that an
uninitialized pointer on the stack (orig_fp) can call into
sk_unattached_filter_destroy() when its value is non NULL.

Before that commit orig_fp was only destroyed in the same
block where it was assigned a valid BPF prog before. Fix it
up by initializing it to NULL.

Fixes: 34c5bd66e5ed ("net: filter: don't release unattached filter through call_rcu()")
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Cc: Pablo Neira <pablo@netfilter.org>
Cc: Alexei Starovoitov <ast@plumgrid.com>
Cc: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/team/team_mode_loadbalance.c

index 7106f3456439468772189ce8053efe598ab8101b..d7be9b36bce67bd60e0549f86c0fb5c8f942f866 100644 (file)
@@ -272,7 +272,7 @@ static int lb_bpf_func_set(struct team *team, struct team_gsetter_ctx *ctx)
 {
        struct lb_priv *lb_priv = get_lb_priv(team);
        struct sk_filter *fp = NULL;
-       struct sk_filter *orig_fp;
+       struct sk_filter *orig_fp = NULL;
        struct sock_fprog_kern *fprog = NULL;
        int err;