git: dcf2dfed26ed - main - tcp: unloading a module that is set to default should error.

From: Randall Stewart <rrs_at_FreeBSD.org>
Date: Thu, 02 Dec 2021 11:15:36 UTC
The branch main has been updated by rrs:

URL: https://cgit.FreeBSD.org/src/commit/?id=dcf2dfed26ed34602e17bee9318f0fde9429577e

commit dcf2dfed26ed34602e17bee9318f0fde9429577e
Author:     Randall Stewart <rrs@FreeBSD.org>
AuthorDate: 2021-12-02 11:12:16 +0000
Commit:     Randall Stewart <rrs@FreeBSD.org>
CommitDate: 2021-12-02 11:12:16 +0000

    tcp: unloading a module that is set to default should error.
    
    I just discovered that the return of the EBUSY error was incorrectly
    rigged so that you could unload a CC module that was set to default.
    Its supposed to be an EBUSY error. Make it so.
    
    Reviewed by: Michael Tuexen
    Sponsored by: Netflix Inc.
    Differential Revision: https://reviews.freebsd.org/D33229
---
 sys/netinet/cc/cc.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/sys/netinet/cc/cc.c b/sys/netinet/cc/cc.c
index b49e5940bc7e..bcda9276d4d9 100644
--- a/sys/netinet/cc/cc.c
+++ b/sys/netinet/cc/cc.c
@@ -246,14 +246,13 @@ cc_deregister_algo(struct cc_algo *remove_cc)
 	STAILQ_FOREACH_SAFE(funcs, &cc_list, entries, tmpfuncs) {
 		if (funcs == remove_cc) {
 			if (cc_check_default(remove_cc)) {
-				err = EBUSY;
-				break;
+				CC_LIST_WUNLOCK();
+				return(EBUSY);
 			}
-			/* Add a temp flag to stop new adds to it */
-			funcs->flags |= CC_MODULE_BEING_REMOVED;
 			break;
 		}
 	}
+	remove_cc->flags |= CC_MODULE_BEING_REMOVED;
 	CC_LIST_WUNLOCK();
 	err = tcp_ccalgounload(remove_cc);
 	/*