Message ID | ea235720-5bbd-27b7-a9b1-34aa8a344e3a@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: armv8_deprecated: Checking return value for memory allocation | expand |
On Sun, Sep 29, 2019 at 12:44:17PM +0800, Yunfeng Ye wrote: > There are no return value checking when using kzalloc() and kcalloc() for > memory allocation. so add it. > > Signed-off-by: Yunfeng Ye <yeyunfeng@huawei.com> > --- > arch/arm64/kernel/armv8_deprecated.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/arch/arm64/kernel/armv8_deprecated.c b/arch/arm64/kernel/armv8_deprecated.c > index 2ec09de..ca158be 100644 > --- a/arch/arm64/kernel/armv8_deprecated.c > +++ b/arch/arm64/kernel/armv8_deprecated.c > @@ -174,6 +174,9 @@ static void __init register_insn_emulation(struct insn_emulation_ops *ops) > struct insn_emulation *insn; > > insn = kzalloc(sizeof(*insn), GFP_KERNEL); > + if (!insn) > + return; > + > insn->ops = ops; > insn->min = INSN_UNDEF; > > @@ -233,6 +236,8 @@ static void __init register_insn_emulation_sysctl(void) > > insns_sysctl = kcalloc(nr_insn_emulated + 1, sizeof(*sysctl), > GFP_KERNEL); > + if (!insns_sysctl) > + return; Since both of these failure paths are fatal to the instruction emulation, can you please return an error code when the allocation fails and use that to fail the calling initcall() appropriately? Will
On 2019/9/30 21:22, Will Deacon wrote: > On Sun, Sep 29, 2019 at 12:44:17PM +0800, Yunfeng Ye wrote: >> There are no return value checking when using kzalloc() and kcalloc() for >> memory allocation. so add it. >> >> Signed-off-by: Yunfeng Ye <yeyunfeng@huawei.com> >> --- >> arch/arm64/kernel/armv8_deprecated.c | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> diff --git a/arch/arm64/kernel/armv8_deprecated.c b/arch/arm64/kernel/armv8_deprecated.c >> index 2ec09de..ca158be 100644 >> --- a/arch/arm64/kernel/armv8_deprecated.c >> +++ b/arch/arm64/kernel/armv8_deprecated.c >> @@ -174,6 +174,9 @@ static void __init register_insn_emulation(struct insn_emulation_ops *ops) >> struct insn_emulation *insn; >> >> insn = kzalloc(sizeof(*insn), GFP_KERNEL); >> + if (!insn) >> + return; >> + >> insn->ops = ops; >> insn->min = INSN_UNDEF; >> >> @@ -233,6 +236,8 @@ static void __init register_insn_emulation_sysctl(void) >> >> insns_sysctl = kcalloc(nr_insn_emulated + 1, sizeof(*sysctl), >> GFP_KERNEL); >> + if (!insns_sysctl) >> + return; > > Since both of these failure paths are fatal to the instruction emulation, > can you please return an error code when the allocation fails and use that > to fail the calling initcall() appropriately? > ok, I will modify as your suggest, thanks. > Will > > . >
diff --git a/arch/arm64/kernel/armv8_deprecated.c b/arch/arm64/kernel/armv8_deprecated.c index 2ec09de..ca158be 100644 --- a/arch/arm64/kernel/armv8_deprecated.c +++ b/arch/arm64/kernel/armv8_deprecated.c @@ -174,6 +174,9 @@ static void __init register_insn_emulation(struct insn_emulation_ops *ops) struct insn_emulation *insn; insn = kzalloc(sizeof(*insn), GFP_KERNEL); + if (!insn) + return; + insn->ops = ops; insn->min = INSN_UNDEF; @@ -233,6 +236,8 @@ static void __init register_insn_emulation_sysctl(void) insns_sysctl = kcalloc(nr_insn_emulated + 1, sizeof(*sysctl), GFP_KERNEL); + if (!insns_sysctl) + return; raw_spin_lock_irqsave(&insn_emulation_lock, flags); list_for_each_entry(insn, &insn_emulation, node) {
There are no return value checking when using kzalloc() and kcalloc() for memory allocation. so add it. Signed-off-by: Yunfeng Ye <yeyunfeng@huawei.com> --- arch/arm64/kernel/armv8_deprecated.c | 5 +++++ 1 file changed, 5 insertions(+)