diff --git a/bitbake/lib/pyinotify.py b/bitbake/lib/pyinotify.py
index 5c9b6d0fe2..3c5dab0312 100644
--- a/bitbake/lib/pyinotify.py
+++ b/bitbake/lib/pyinotify.py
@@ -595,24 +595,23 @@ class _ProcessEvent:
         @type event: Event object
         @return: By convention when used from the ProcessEvent class:
                  - Returning False or None (default value) means keep on
-                 executing next chained functors (see chain.py example).
+                   executing next chained functors (see chain.py example).
                  - Returning True instead means do not execute next
                    processing functions.
         @rtype: bool
         @raise ProcessEventError: Event object undispatchable,
                                   unknown event.
         """
-        stripped_mask = event.mask - (event.mask & IN_ISDIR)
-        # Bitbake hack - we see event masks of 0x6, IN_MODIFY & IN_ATTRIB
+        stripped_mask = event.mask & ~IN_ISDIR
+        # Bitbake hack - we see event masks of 0x6, i.e., IN_MODIFY & IN_ATTRIB.
         # The kernel inotify code can set more than one of the bits in the mask,
         # fsnotify_change() in linux/fsnotify.h is quite clear that IN_ATTRIB,
         # IN_MODIFY and IN_ACCESS can arrive together.
         # This breaks the code below which assume only one mask bit is ever
-        # set in an event. We don't care about attrib or access in bitbake so drop those
-        if (stripped_mask & IN_MODIFY) and (stripped_mask & IN_ATTRIB):
-            stripped_mask = stripped_mask - (stripped_mask & IN_ATTRIB)
-        if (stripped_mask & IN_MODIFY) and (stripped_mask & IN_ACCESS):
-            stripped_mask = stripped_mask - (stripped_mask & IN_ACCESS)
+        # set in an event. We don't care about attrib or access in bitbake so
+        # drop those.
+        if stripped_mask & IN_MODIFY:
+            stripped_mask &= ~(IN_ATTRIB | IN_ACCESS)
 
         maskname = EventsCodes.ALL_VALUES.get(stripped_mask)
         if maskname is None:
