Index: sys/fs/tmpfs/tmpfs_mem.c =================================================================== RCS file: /cvsroot/src/sys/fs/tmpfs/tmpfs_mem.c,v retrieving revision 1.8 diff -u -p -r1.8 tmpfs_mem.c --- sys/fs/tmpfs/tmpfs_mem.c 13 Jun 2014 11:57:48 -0000 1.8 +++ sys/fs/tmpfs/tmpfs_mem.c 22 Aug 2016 23:03:56 -0000 @@ -116,12 +116,13 @@ uint64_t tmpfs_bytes_max(struct tmpfs_mount *mp) { psize_t freepages = tmpfs_mem_info(false); + int freetarg = uvmexp.freetarg; // XXX unlocked uint64_t avail_mem; - if (freepages < uvmexp.freetarg) { + if (freepages < freetarg) { freepages = 0; } else { - freepages -= uvmexp.freetarg; + freepages -= freetarg; } avail_mem = round_page(mp->tm_bytes_used) + (freepages << PAGE_SHIFT); return MIN(mp->tm_mem_limit, avail_mem); @@ -187,6 +188,7 @@ tmpfs_node_get(struct tmpfs_mount *mp) return NULL; } if (!tmpfs_mem_incr(mp, sizeof(struct tmpfs_node))) { + atomic_dec_uint(&mp->tm_nodes_cnt); return NULL; } return pool_get(&tmpfs_node_pool, PR_WAITOK);