diff --git a/net/sched/act_api.c b/net/sched/act_api.c
index ecede5158a29593684d1e6fcb39cf448e5ac9ae7..5a361deb804a3146d0aed8b2d378963be51db581 100644
--- a/net/sched/act_api.c
+++ b/net/sched/act_api.c
@@ -834,7 +834,6 @@ int tcf_idr_check_alloc(struct tc_action_net *tn, u32 *index,
 	u32 max;
 
 	if (*index) {
-again:
 		rcu_read_lock();
 		p = idr_find(&idrinfo->action_idr, *index);
 
@@ -843,7 +842,7 @@ int tcf_idr_check_alloc(struct tc_action_net *tn, u32 *index,
 			 * index but did not assign the pointer yet.
 			 */
 			rcu_read_unlock();
-			goto again;
+			return -EAGAIN;
 		}
 
 		if (!p) {