diff
 void page_cache_ra_order(struct readahead_control *ractl,
 		struct file_ra_state *ra, unsigned int new_order)
 {
+    bool lock_acquired = false;
     // ... (existing code)
-    filemap_invalidate_lock_shared(mapping);
+    if (filemap_invalidate_lock_shared(mapping) == 0) {
+        lock_acquired = true;
+    } else {
+        // Handle lock acquisition failure
+        return;
+    }
     // ... (existing code)
-    filemap_invalidate_unlock_shared(mapping);
+    if (lock_acquired) {
+        filemap_invalidate_unlock_shared(mapping);
+    }
 }
