SUNRPC: Remove BUG_ON call sites
authorChuck Lever <chuck.lever@oracle.com>
Tue, 19 Sep 2023 15:35:15 +0000 (11:35 -0400)
committerChuck Lever <chuck.lever@oracle.com>
Mon, 16 Oct 2023 16:44:10 +0000 (12:44 -0400)
There is no need to take down the whole system for these assertions.

I'd rather not attempt a heroic save here, as some bug has occurred
that has left the transport data structures in an unknown state.
Just warn and then leak the left-over resources.

Acked-by: Christian Brauner <brauner@kernel.org>
Reviewed-by: NeilBrown <neilb@suse.de>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
net/sunrpc/svc.c

index 7d4c10e609dcd4f06ae86b2c2cd087c023576013..3f2ea7a0496fdc520a498fe9dd3af0eafcc75c98 100644 (file)
@@ -573,11 +573,12 @@ svc_destroy(struct kref *ref)
        timer_shutdown_sync(&serv->sv_temptimer);
 
        /*
-        * The last user is gone and thus all sockets have to be destroyed to
-        * the point. Check this.
+        * Remaining transports at this point are not expected.
         */
-       BUG_ON(!list_empty(&serv->sv_permsocks));
-       BUG_ON(!list_empty(&serv->sv_tempsocks));
+       WARN_ONCE(!list_empty(&serv->sv_permsocks),
+                 "SVC: permsocks remain for %s\n", serv->sv_program->pg_name);
+       WARN_ONCE(!list_empty(&serv->sv_tempsocks),
+                 "SVC: tempsocks remain for %s\n", serv->sv_program->pg_name);
 
        cache_clean_deferred(serv);