[PATCH] dm: core: Fix incorrect flag check

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] dm: core: Fix incorrect flag check

Marek Vasut
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 <[hidden email]>
Cc: Simon Glass <[hidden email]>
---
 drivers/core/device-remove.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/core/device-remove.c b/drivers/core/device-remove.c
index efdb0f2905..0924a575f5 100644
--- a/drivers/core/device-remove.c
+++ b/drivers/core/device-remove.c
@@ -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;
--
2.29.2

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] dm: core: Fix incorrect flag check

Simon Glass-3
On Sun, 15 Nov 2020 at 13:23, Marek Vasut <[hidden email]> wrote:

>
> 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 <[hidden email]>
> Cc: Simon Glass <[hidden email]>
> ---
>  drivers/core/device-remove.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Simon Glass <[hidden email]>