Message ID | 20250227160419.3065643-1-juny24602@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | sched: address a potential NULL pointer dereference in the GRED scheduler. | expand |
On Fri, Feb 28, 2025 at 12:04:19AM +0800, kwqcheii wrote:
> If kzalloc in gred_init returns a NULL pointer, the code follows the error handling path, invoking gred_destroy. This, in turn, calls gred_offload, where memset could receive a NULL pointer as input, potentially leading to a kernel crash.
Thanks for your patch.
Please add your Signed-off-by for your patch, which is a minimum
requirement here. You can check Linux kernel development process for
more details: https://docs.kernel.org/process/5.Posting.html#before-creating-patches
Also, ./scripts/checkpatch.pl could help you catch issues like this one,
it would save you and others a lot of time.
Lastly, if you saw a real crash, please include the kernel stack trace
in your patch description. There is a significant difference between a
real crash and a theoretical one.
Regards,
Cong
diff --git a/net/sched/sch_gred.c b/net/sched/sch_gred.c index ab6234b4fcd5..fa643e5709bd 100644 --- a/net/sched/sch_gred.c +++ b/net/sched/sch_gred.c @@ -317,10 +317,12 @@ static void gred_offload(struct Qdisc *sch, enum tc_gred_command command) if (!tc_can_offload(dev) || !dev->netdev_ops->ndo_setup_tc) return; - memset(opt, 0, sizeof(*opt)); - opt->command = command; - opt->handle = sch->handle; - opt->parent = sch->parent; + if (opt) { + memset(opt, 0, sizeof(*opt)); + opt->command = command; + opt->handle = sch->handle; + opt->parent = sch->parent; + } if (command == TC_GRED_REPLACE) { unsigned int i;