struct rb_root *sl_id_map = &sriov->sl_id_map;
        struct list_head lh;
        struct rb_node *nd;
-       int need_flush = 1;
+       int need_flush = 0;
        struct id_map_entry *map, *tmp_map;
        /* cancel all delayed work queue entries */
        INIT_LIST_HEAD(&lh);
        list_for_each_entry_safe(map, tmp_map, &dev->sriov.cm_list, list) {
                if (slave < 0 || slave == map->slave_id) {
                        if (map->scheduled_delete)
-                               need_flush &= !!cancel_delayed_work(&map->timeout);
+                               need_flush |= !cancel_delayed_work(&map->timeout);
                }
        }
 
        spin_unlock(&sriov->id_map_lock);
 
-       if (!need_flush)
+       if (need_flush)
                flush_scheduled_work(); /* make sure all timers were flushed */
 
        /* now, remove all leftover entries from databases*/