The branch main has been updated by rrs:

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

commit dcf2dfed26ed34602e17bee9318f0fde9429577e
Author:     Randall Stewart <[email protected]>
AuthorDate: 2021-12-02 11:12:16 +0000
Commit:     Randall Stewart <[email protected]>
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);
        /*

Reply via email to