Re: [PATCH] mm: Fix warning comparing pointer to 0

From: Joe Perches
Date: Wed Nov 24 2021 - 23:02:59 EST


On Wed, 2021-11-24 at 18:13 +0800, Jiapeng Chong wrote:
> Fix the following coccicheck warning:
>
> ./arch/alpha/mm/fault.c:193:52-53: WARNING comparing pointer to 0.
>
> Reported-by: Abaci Robot <abaci@xxxxxxxxxxxxxxxxx>
> Signed-off-by: Jiapeng Chong <jiapeng.chong@xxxxxxxxxxxxxxxxx>
[]
> diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
[]
> @@ -190,7 +190,7 @@
>
> no_context:
> /* Are we prepared to handle this fault as an exception? */
> - if ((fixup = search_exception_tables(regs->pc)) != 0) {
> + if (!(fixup = search_exception_tables(regs->pc)) {

This is now a reversed test.

The more typical kernel style is:

fixup = search_exception_tables(regs->pc);
if (fixup) {

> unsigned long newpc;
> newpc = fixup_exception(dpf_reg, fixup, regs->pc);
> regs->pc = newpc;

and it looks as if newpc is unnecessary. Maybe:
---
arch/alpha/mm/fault.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
index eee5102c3d889..364b6322629cb 100644
--- a/arch/alpha/mm/fault.c
+++ b/arch/alpha/mm/fault.c
@@ -192,10 +192,9 @@ do_page_fault(unsigned long address, unsigned long mmcsr,

no_context:
/* Are we prepared to handle this fault as an exception? */
- if ((fixup = search_exception_tables(regs->pc)) != 0) {
- unsigned long newpc;
- newpc = fixup_exception(dpf_reg, fixup, regs->pc);
- regs->pc = newpc;
+ fixup = search_exception_tables(regs->pc)
+ if (fixup) {
+ regs->pc = fixup_exception(dpf_reg, fixup, regs->pc);
return;
}