freebsd-skq/sys/vm
bmilekic 1edc23feaa Make the slabrefzone, the zone from which we allocated slabs with
internal reference counters, UMA_ZONE_NOFREE.  This way, those slabs
(with their ref counts) will be effectively type-stable, then using
a trick like this on the refcount is no longer dangerous:

        MEXT_REM_REF(m);
        if (atomic_cmpset_int(m->m_ext.ref_cnt, 0, 1)) {
                if (m->m_ext.ext_type == EXT_PACKET) {
                        uma_zfree(zone_pack, m);
                        return;
                } else if (m->m_ext.ext_type == EXT_CLUSTER) {
                        uma_zfree(zone_clust, m->m_ext.ext_buf);
                        m->m_ext.ext_buf = NULL;
                } else {
                        (*(m->m_ext.ext_free))(m->m_ext.ext_buf,
                            m->m_ext.ext_args);
                        if (m->m_ext.ext_type != EXT_EXTREF)
                                free(m->m_ext.ref_cnt, M_MBUF);
                }
        }
        uma_zfree(zone_mbuf, m);

Previously, a second thread hitting the above cmpset might
actually read the refcnt AFTER it has already been freed.  A very
rare occurance.  Now we'll know that it won't be freed, though.

Spotted by: julian, pjd
2004-06-09 19:18:50 +00:00
..
default_pager.c Access the swap_pagers' ->putpages() through swappagerops instead 2003-08-06 12:05:48 +00:00
device_pager.c Push down Giant into vm_pager_get_pages(). The only get pages methods that 2004-04-23 06:10:58 +00:00
phys_pager.c Zero the physical page only if it is invalid and not prezeroed. 2004-04-25 07:58:59 +00:00
pmap.h - pmap_kenter_temporary() is unused by machine-independent code. Therefore, 2004-04-10 22:41:46 +00:00
swap_pager.c Make vm_page's PG_ZERO flag immutable between the time of the page's 2004-05-06 05:03:23 +00:00
swap_pager.h Remove advertising clause from University of California Regent's license, 2004-04-06 20:15:37 +00:00
uma_core.c Make the slabrefzone, the zone from which we allocated slabs with 2004-06-09 19:18:50 +00:00
uma_dbg.c Bring in mbuma to replace mballoc. 2004-05-31 21:46:06 +00:00
uma_dbg.h
uma_int.h Bring in mbuma to replace mballoc. 2004-05-31 21:46:06 +00:00
uma.h Fix a comment above uma_zsecond_create(), describing its arguments. 2004-06-01 01:36:26 +00:00
vm_contig.c Remove advertising clause from University of California Regent's license, 2004-04-06 20:15:37 +00:00
vm_extern.h To date, unwiring a fictitious page has produced a panic. The reason 2004-05-22 04:53:51 +00:00
vm_fault.c To date, unwiring a fictitious page has produced a panic. The reason 2004-05-22 04:53:51 +00:00
vm_glue.c In r1.190, vslock() and vsunlock() were bogusly made to do a "user wire" 2004-05-07 11:43:24 +00:00
vm_init.c The demise of vm_pager_map_page() in revision 1.93 of vm/vm_pager.c permits 2004-04-08 19:08:49 +00:00
vm_kern.c Bring in mbuma to replace mballoc. 2004-05-31 21:46:06 +00:00
vm_kern.h Remove advertising clause from University of California Regent's license, 2004-04-06 20:15:37 +00:00
vm_map.c Back out previous commit; it went to the wrong file. 2004-05-25 18:28:52 +00:00
vm_map.h In cases where a file was resident in memory mmap(..., PROT_NONE, ...) 2004-04-24 03:46:44 +00:00
vm_meter.c Remove advertising clause from University of California Regent's license, 2004-04-06 20:15:37 +00:00
vm_mmap.c To handle orphaned character device vnodes properly in mmap(), check that 2004-05-11 10:26:37 +00:00
vm_object.c MFS: vm_map.c rev 1.187.2.27 through 1.187.2.29, fix MS_INVALIDATE 2004-05-25 18:40:53 +00:00
vm_object.h Remove advertising clause from University of California Regent's license, 2004-04-06 20:15:37 +00:00
vm_page.c To date, unwiring a fictitious page has produced a panic. The reason 2004-05-22 04:53:51 +00:00
vm_page.h Update stale comments regarding page coloring. 2004-06-05 21:06:42 +00:00
vm_pageout.c Cache queue pages are not mapped. Thus, the pmap_remove_all() by 2004-05-12 04:10:35 +00:00
vm_pageout.h Remove advertising clause from University of California Regent's license, 2004-04-06 20:15:37 +00:00
vm_pageq.c Remove references to L1 in the comments, according to Alan they are 2004-06-07 19:33:05 +00:00
vm_pager.c The demise of vm_pager_map_page() in revision 1.93 of vm/vm_pager.c permits 2004-04-08 19:08:49 +00:00
vm_pager.h The demise of vm_pager_map_page() in revision 1.93 of vm/vm_pager.c permits 2004-04-08 19:08:49 +00:00
vm_param.h Remove advertising clause from University of California Regent's license, 2004-04-06 20:15:37 +00:00
vm_unix.c Remove advertising clause from University of California Regent's license, 2004-04-06 20:15:37 +00:00
vm_zeroidle.c Record exactly where this file was copied from. It wasn't repo-copied so 2004-03-04 10:18:17 +00:00
vm.h Remove advertising clause from University of California Regent's license, 2004-04-06 20:15:37 +00:00
vnode_pager.c Make vm_page's PG_ZERO flag immutable between the time of the page's 2004-05-06 05:03:23 +00:00
vnode_pager.h Remove advertising clause from University of California Regent's license, 2004-04-06 20:15:37 +00:00