From: 王贇 <yun.wang@linux.alibaba.com>
To: Paul Moore <paul@paul-moore.com>,
"David S. Miller" <davem@davemloft.net>,
Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>,
David Ahern <dsahern@kernel.org>,
Jakub Kicinski <kuba@kernel.org>,
netdev@vger.kernel.org, linux-security-module@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: [PATCH v2] net: fix NULL pointer reference in cipso_v4_doi_free
Date: Mon, 30 Aug 2021 18:28:01 +0800 [thread overview]
Message-ID: <18f0171e-0cc8-6ae6-d04a-a69a2a3c1a39@linux.alibaba.com> (raw)
In-Reply-To: <c6864908-d093-1705-76ce-94d6af85e092@linux.alibaba.com>
In netlbl_cipsov4_add_std() when 'doi_def->map.std' alloc
failed, we sometime observe panic:
BUG: kernel NULL pointer dereference, address:
...
RIP: 0010:cipso_v4_doi_free+0x3a/0x80
...
Call Trace:
netlbl_cipsov4_add_std+0xf4/0x8c0
netlbl_cipsov4_add+0x13f/0x1b0
genl_family_rcv_msg_doit.isra.15+0x132/0x170
genl_rcv_msg+0x125/0x240
This is because in cipso_v4_doi_free() there is no check
on 'doi_def->map.std' when doi_def->type got value 1, which
is possibe, since netlbl_cipsov4_add_std() haven't initialize
it before alloc 'doi_def->map.std'.
This patch just add the check to prevent panic happen in similar
cases.
Reported-by: Abaci <abaci@linux.alibaba.com>
Signed-off-by: Michael Wang <yun.wang@linux.alibaba.com>
---
net/netlabel/netlabel_cipso_v4.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/netlabel/netlabel_cipso_v4.c b/net/netlabel/netlabel_cipso_v4.c
index baf2357..344c228 100644
--- a/net/netlabel/netlabel_cipso_v4.c
+++ b/net/netlabel/netlabel_cipso_v4.c
@@ -144,8 +144,8 @@ static int netlbl_cipsov4_add_std(struct genl_info *info,
return -ENOMEM;
doi_def->map.std = kzalloc(sizeof(*doi_def->map.std), GFP_KERNEL);
if (doi_def->map.std == NULL) {
- ret_val = -ENOMEM;
- goto add_std_failure;
+ kfree(doi_def);
+ return -ENOMEM;
}
doi_def->type = CIPSO_V4_MAP_TRANS;
--
1.8.3.1
next prev parent reply other threads:[~2021-08-30 10:28 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-26 3:42 [PATCH] net: fix NULL pointer reference in cipso_v4_doi_free 王贇
2021-08-27 0:09 ` Paul Moore
2021-08-30 10:20 ` 王贇
2021-08-30 10:14 ` 王贇
2021-08-30 10:28 ` 王贇 [this message]
2021-08-30 11:30 ` [PATCH v2] " patchwork-bot+netdevbpf
2021-08-30 14:17 ` Paul Moore
2021-08-30 16:45 ` Jakub Kicinski
2021-08-30 16:50 ` Paul Moore
2021-08-31 2:41 ` 王贇
2021-08-31 13:48 ` Paul Moore
2021-09-01 1:51 ` 王贇
2021-09-01 9:30 ` David Miller
2021-09-01 9:41 ` 王贇
2021-09-01 10:45 ` David Miller
2021-09-02 3:04 ` 王贇
2021-09-01 2:18 ` [PATCH] Revert "net: fix NULL pointer reference in cipso_v4_doi_free" 王贇
2021-09-01 2:21 ` 王贇
2021-09-01 21:05 ` Paul Moore
2021-09-02 2:37 ` 王贇
2021-09-03 2:15 ` Paul Moore
2021-09-03 2:31 ` 王贇
2021-09-03 14:08 ` Paul Moore
2021-09-03 2:27 ` [PATCH] net: remove the unnecessary check in cipso_v4_doi_free 王贇
2021-09-03 14:08 ` Paul Moore
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=18f0171e-0cc8-6ae6-d04a-a69a2a3c1a39@linux.alibaba.com \
--to=yun.wang@linux.alibaba.com \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=paul@paul-moore.com \
--cc=yoshfuji@linux-ipv6.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.