again: nfiles_snap = openfiles + nfiles_slack; /* some slack */ extra_ref = malloc(nfiles_snap * sizeof(struct file *), M_TEMP, M_WAITOK); sx_slock(&filelist_lock); if (nfiles_snap < openfiles) { sx_sunlock(&filelist_lock); free(extra_ref, M_TEMP); nfiles_slack += 20; goto again; }