Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e576de82 authored by Jesper Juhl's avatar Jesper Juhl Committed by David S. Miller
Browse files

[DCCP]: fix memory leak and clean up style - dccp_feat_empty_confirm()



There's a memory leak in net/dccp/feat.c::dccp_feat_empty_confirm().  If we
hit the 'default:' case of the 'switch' statement, then we return without
freeing 'opt', thus leaking 'struct dccp_opt_pend' bytes.

The leak is fixed easily enough by adding a kfree(opt); before the return
statement.

The patch also changes the layout of the 'switch' to be more in line with
CodingStyle.

Signed-off-by: default avatarJesper Juhl <jesper.juhl@gmail.com>
Acked-by: default avatarIan McDonald <ian.mcdonald@jandi.co.nz>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d725fdc8
Loading
Loading
Loading
Loading
+10 −4
Original line number Original line Diff line number Diff line
@@ -327,10 +327,16 @@ static void dccp_feat_empty_confirm(struct dccp_minisock *dmsk,
	}
	}


	switch (type) {
	switch (type) {
	case DCCPO_CHANGE_L: opt->dccpop_type = DCCPO_CONFIRM_R; break;
	case DCCPO_CHANGE_L:
	case DCCPO_CHANGE_R: opt->dccpop_type = DCCPO_CONFIRM_L; break;
		opt->dccpop_type = DCCPO_CONFIRM_R;
	default:	     DCCP_WARN("invalid type %d\n", type); return;
		break;

	case DCCPO_CHANGE_R:
		opt->dccpop_type = DCCPO_CONFIRM_L;
		break;
	default:
		DCCP_WARN("invalid type %d\n", type);
		kfree(opt);
		return;
	}
	}
	opt->dccpop_feat = feature;
	opt->dccpop_feat = feature;
	opt->dccpop_val	 = NULL;
	opt->dccpop_val	 = NULL;