/* Look it up and read it in.. */
        folio = swap_cache_get_folio(swap, NULL, 0);
        if (!folio) {
-               /* Or update major stats only when swapin succeeds?? */
-               if (fault_type) {
-                       *fault_type |= VM_FAULT_MAJOR;
-                       count_vm_event(PGMAJFAULT);
-                       count_memcg_event_mm(fault_mm, PGMAJFAULT);
-               }
-
                if (data_race(si->flags & SWP_SYNCHRONOUS_IO)) {
                        /* Direct swapin skipping swap cache & readahead */
                        folio = shmem_swap_alloc_folio(inode, vma, index,
                                goto failed;
                        }
                }
+               if (fault_type) {
+                       *fault_type |= VM_FAULT_MAJOR;
+                       count_vm_event(PGMAJFAULT);
+                       count_memcg_event_mm(fault_mm, PGMAJFAULT);
+               }
        }
 
        if (order > folio_order(folio)) {