(!ptr && !ptr->foo) strikes again. :)

The expression (!ptr && !ptr->foo) is bogus and in case ptr is NULL,
it leads to a NULL pointer dereference: ptr->foo.

Fix this by converting && to ||

This issue was detected with the help of Coccinelle, and audited and
fixed manually.

Fixes: 1a0d0d5ed5e3 ("powerpc/vas: Add platform specific user window 
operations")
Cc: sta...@vger.kernel.org
Signed-off-by: Gustavo A. R. Silva <gustavo...@kernel.org>
---
 arch/powerpc/platforms/book3s/vas-api.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/platforms/book3s/vas-api.c 
b/arch/powerpc/platforms/book3s/vas-api.c
index 30172e52e16b..4d82c92ddd52 100644
--- a/arch/powerpc/platforms/book3s/vas-api.c
+++ b/arch/powerpc/platforms/book3s/vas-api.c
@@ -303,7 +303,7 @@ static int coproc_ioc_tx_win_open(struct file *fp, unsigned 
long arg)
                return -EINVAL;
        }
 
-       if (!cp_inst->coproc->vops && !cp_inst->coproc->vops->open_win) {
+       if (!cp_inst->coproc->vops || !cp_inst->coproc->vops->open_win) {
                pr_err("VAS API is not registered\n");
                return -EACCES;
        }
@@ -373,7 +373,7 @@ static int coproc_mmap(struct file *fp, struct 
vm_area_struct *vma)
                return -EINVAL;
        }
 
-       if (!cp_inst->coproc->vops && !cp_inst->coproc->vops->paste_addr) {
+       if (!cp_inst->coproc->vops || !cp_inst->coproc->vops->paste_addr) {
                pr_err("%s(): VAS API is not registered\n", __func__);
                return -EACCES;
        }
-- 
2.27.0

Reply via email to