[PATCH 3/7] gnttab: fold redundant error code paths in acquire_grant_for_copy()

Jan Beulich <[email protected]>
Newsgroups org.xenproject.lists.xen-devel
Message-ID <[email protected]>
One of the open-coded error paths of transitive grant handling is an exact
match of the code at the unlock_out_clear label. The other can be made so
by moving the put_page() earlier.

Signed-off-by: Jan Beulich <[email protected]>

--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -2729,10 +2729,7 @@ acquire_grant_for_copy(
         {
             atomic_dec(&rgt->nr_v2_ops);
             rcu_unlock_domain(td);
-            reduce_status_for_pin(rd, act, status, readonly);
-            active_entry_release(act);
-            grant_read_unlock(rgt);
-            return rc;
+            goto unlock_out_clear;
         }
 
         /*
@@ -2763,17 +2760,16 @@ acquire_grant_for_copy(
             release_grant_for_copy(td, trans_gref, readonly);
             rcu_unlock_domain(td);
 
+            put_page(*page);
+            *page = NULL;
+
             grant_read_lock(rgt);
             atomic_dec(&rgt->nr_v2_ops);
 
             act = active_entry_acquire(rgt, gref);
-            reduce_status_for_pin(rd, act, status, readonly);
-            active_entry_release(act);
-            grant_read_unlock(rgt);
 
-            put_page(*page);
-            *page = NULL;
-            return ERESTART;
+            rc = ERESTART;
+            goto unlock_out_clear;
         }
 
         if ( !old_pin )
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.