View | Details | Raw Unified | Return to bug 31492
Collapse All | Expand All

(-)kern/kern_sysctl.c 2001/10/25 15:26:31 (-7 / +18 lines)
Lines 281-295 Link Here
281
        */
281
        */
282
       if ((oidp->oid_kind & CTLTYPE) == CTLTYPE_NODE) {
282
       if ((oidp->oid_kind & CTLTYPE) == CTLTYPE_NODE) {
283
               if (oidp->oid_refcnt == 1) {
283
               if (oidp->oid_refcnt == 1) {
284
                       SLIST_FOREACH(p, SYSCTL_CHILDREN(oidp), oid_link) {
284
                       if (!SLIST_EMPTY(SYSCTL_CHILDREN(oidp)) && !recurse)
285
                               if (!recurse)
286
                                       return (ENOTEMPTY);
285
                                       return (ENOTEMPTY);
287
                               error = sysctl_remove_oid(p, del, recurse);
286
288
                               if (error)
287
                       if (del) {
289
                                       return (error);
288
                               while (!SLIST_EMPTY(SYSCTL_CHILDREN(oidp))) {
290
                       }
289
                                       p = SLIST_FIRST(SYSCTL_CHILDREN(oidp));
291
                       if (del)
290
                                       error = sysctl_remove_oid(p, del, recurse);
291
                                       if (error)
292
                                               return (error);
293
                               }
292
                               free(SYSCTL_CHILDREN(oidp), M_SYSCTLOID);
294
                               free(SYSCTL_CHILDREN(oidp), M_SYSCTLOID);
295
                       } else {
296
                               SLIST_FOREACH(p, SYSCTL_CHILDREN(oidp), oid_link) {
297
                                       if (!recurse)
298
                                               return (ENOTEMPTY);
299
                                       error = sysctl_remove_oid(p, del, recurse);
300
                                       if (error)
301
                                               return (error);
302
                               }
303
                       }
293
               }
304
               }
294
       }
305
       }
295
       if (oidp->oid_refcnt > 1 ) {
306
       if (oidp->oid_refcnt > 1 ) {

Return to bug 31492