diff options
author | Xin Long | 2017-07-26 01:20:15 -0500 |
---|---|---|
committer | Greg Kroah-Hartman | 2017-08-11 11:08:54 -0500 |
commit | dd4edbcbb760ba024dc25017937592bd56994801 (patch) | |
tree | cdff7b68121184cb74ffe4f0d7ff14d66a51ded4 /net | |
parent | adcc87858e0915554b2484b8a4657bb49dbe0843 (diff) | |
download | kernel-omap-dd4edbcbb760ba024dc25017937592bd56994801.tar.gz kernel-omap-dd4edbcbb760ba024dc25017937592bd56994801.tar.xz kernel-omap-dd4edbcbb760ba024dc25017937592bd56994801.zip |
dccp: fix a memleak for dccp_feat_init err process
[ Upstream commit e90ce2fc27cad7e7b1e72b9e66201a7a4c124c2b ]
In dccp_feat_init, when ccid_get_builtin_ccids failsto alloc
memory for rx.val, it should free tx.val before returning an
error.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/dccp/feat.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/dccp/feat.c b/net/dccp/feat.c index 1704948e6a12..f227f002c73d 100644 --- a/net/dccp/feat.c +++ b/net/dccp/feat.c | |||
@@ -1471,9 +1471,12 @@ int dccp_feat_init(struct sock *sk) | |||
1471 | * singleton values (which always leads to failure). | 1471 | * singleton values (which always leads to failure). |
1472 | * These settings can still (later) be overridden via sockopts. | 1472 | * These settings can still (later) be overridden via sockopts. |
1473 | */ | 1473 | */ |
1474 | if (ccid_get_builtin_ccids(&tx.val, &tx.len) || | 1474 | if (ccid_get_builtin_ccids(&tx.val, &tx.len)) |
1475 | ccid_get_builtin_ccids(&rx.val, &rx.len)) | ||
1476 | return -ENOBUFS; | 1475 | return -ENOBUFS; |
1476 | if (ccid_get_builtin_ccids(&rx.val, &rx.len)) { | ||
1477 | kfree(tx.val); | ||
1478 | return -ENOBUFS; | ||
1479 | } | ||
1477 | 1480 | ||
1478 | if (!dccp_feat_prefer(sysctl_dccp_tx_ccid, tx.val, tx.len) || | 1481 | if (!dccp_feat_prefer(sysctl_dccp_tx_ccid, tx.val, tx.len) || |
1479 | !dccp_feat_prefer(sysctl_dccp_rx_ccid, rx.val, rx.len)) | 1482 | !dccp_feat_prefer(sysctl_dccp_rx_ccid, rx.val, rx.len)) |