dm: core: Fix incorrect flag check
authorMarek Vasut <marek.vasut@gmail.com>
Sun, 15 Nov 2020 20:22:53 +0000 (21:22 +0100)
committerSimon Glass <sjg@chromium.org>
Mon, 30 Nov 2020 20:14:43 +0000 (13:14 -0700)
The test should be checking whether $flags are non-zero and $drv_flags
contain specific flags, however these two sets of flags are separate,
and the two tests should be logically ANDed, not bitwise ANDed.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/core/device-remove.c

index efdb0f2..0924a57 100644 (file)
@@ -152,7 +152,7 @@ void device_free(struct udevice *dev)
 static bool flags_remove(uint flags, uint drv_flags)
 {
        if ((flags & DM_REMOVE_NORMAL) ||
-           (flags & (drv_flags & (DM_FLAG_ACTIVE_DMA | DM_FLAG_OS_PREPARE))))
+           (flags && (drv_flags & (DM_FLAG_ACTIVE_DMA | DM_FLAG_OS_PREPARE))))
                return true;
 
        return false;