tmpfs supports only INT_MAX nodes due to limitations of unit number
allocator. Replace UINT32_MAX checks with INT_MAX. Keeping more than 2^31 nodes in memory is not likely to become possible in foreseeable feature and would require new unit number allocator. Discussed with: delphij MFC after: 2 weeks
This commit is contained in:
parent
0ff93c48da
commit
9295c62814
@ -130,6 +130,8 @@ tmpfs_node_fini(void *mem, int size)
|
||||
static int
|
||||
tmpfs_mount(struct mount *mp)
|
||||
{
|
||||
const size_t nodes_per_page = howmany(PAGE_SIZE,
|
||||
sizeof(struct tmpfs_dirent) + sizeof(struct tmpfs_node));
|
||||
struct tmpfs_mount *tmp;
|
||||
struct tmpfs_node *root;
|
||||
int error;
|
||||
@ -195,11 +197,13 @@ tmpfs_mount(struct mount *mp)
|
||||
MPASS(pages > 0);
|
||||
|
||||
if (nodes_max <= 3) {
|
||||
if (pages > UINT32_MAX - 3)
|
||||
nodes_max = UINT32_MAX;
|
||||
if (pages < INT_MAX / nodes_per_page)
|
||||
nodes_max = pages * nodes_per_page;
|
||||
else
|
||||
nodes_max = pages + 3;
|
||||
nodes_max = INT_MAX;
|
||||
}
|
||||
if (nodes_max > INT_MAX)
|
||||
nodes_max = INT_MAX;
|
||||
MPASS(nodes_max >= 3);
|
||||
|
||||
/* Allocate the tmpfs mount structure and fill it. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user