selinux: hooks: use kmalloc() to allocate path buffer
Subsystems (2)
PATCH v2 1/1 selinux: hooks: use kmalloc() to allocate path buffer
selinux_genfs_get_sid() allocates memory for a path with __get_free_page().
Such usage does not require a "page" and the size of the buffer should actually be PATH_MAX which may be less than PAGE_SIZE on some architectures.
Replace __get_free_page() for allocation of a path buffer with kmalloc() and make it explicit that the buffer size is PATH_MAX.
---
This is a (tiny) part of larger work of replacing page allocator calls with kmalloc:
Also in git:
https://git.kernel.org/pub/scm/linux/kernel/git/rppt/linux.git gfp-to-kmalloc/security
---
v4 changes:
* rebase on v7.2-rc1
v3: https://lore.kernel.org/all/[email protected]
* get the args in the right order
v2: https://lore.kernel.org/all/[email protected]
* explicitly use kmalloc() with PATH_MAX
--- security/selinux/hooks.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
security/selinux/hooks.c +3 -3
@@ -1336,11 +1336,11 @@ static int selinux_genfs_get_sid(struct dentry *dentry,struct super_block *sb = dentry->d_sb;char *buffer, *path; - buffer = (char *)__get_free_page (GFP_KERNEL ); + buffer =kmalloc (PATH_MAX ,GFP_KERNEL );if (!buffer)return -ENOMEM ; - path =dentry_path_raw (dentry, buffer,PAGE_SIZE ); + path =dentry_path_raw (dentry, buffer,PATH_MAX );if (IS_ERR (path)) rc =PTR_ERR (path);else {
@@ -1361,7 +1361,7 @@ static int selinux_genfs_get_sid(struct dentry *dentry, rc =0 ; } } -free_page ((unsigned long )buffer); +kfree (buffer);return rc; }
---
base-commit: dc59e4fea9d83f03bad6bddf3fa2e52491777482
change-id: 20260520-security-6cdd60da7129
Best regards,
Signature · 2 lines
Sincerely yours, Mike.
Should have been:
Subject: [PATCH v4] selinux: hooks: use kmalloc() to allocate path buffer
Quoted 67 lines · Mike Rapoport (Microsoft)
selinux_genfs_get_sid()allocates memory for a path with__get_free_page().Such usage does not require a "page" and the size of the buffer should actually be
PATH_MAXwhich may be less thanPAGE_SIZEon some architectures.Replace
__get_free_page()for allocation of a path buffer withkmalloc()and make it explicit that the buffer size isPATH_MAX.Acked-by Stephen Smalley <[email protected]>Signed-off-by Mike Rapoport (Microsoft) <[email protected]>---
This is a (tiny) part of larger work of replacing page allocator calls with kmalloc:Also in git:
https://git.kernel.org/pub/scm/linux/kernel/git/rppt/linux.git gfp-to-kmalloc/security
---
v4 changes:
* rebase on v7.2-rc1v3: https://lore.kernel.org/all/[email protected]
* get the args in the right orderv2: https://lore.kernel.org/all/[email protected]
* explicitly usekmalloc()withPATH_MAX--- security/selinux/hooks.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)security/selinux/hooks.c +3
-4@@ -1336,11 +1336,11 @@ static int selinux_genfs_get_sid(struct dentry *dentry,struct super_block *sb = dentry->d_sb;char *buffer, *path; - buffer = (char *)__get_free_page (GFP_KERNEL ); + buffer =kmalloc (PATH_MAX ,GFP_KERNEL );if (!buffer)return -ENOMEM ; - path =dentry_path_raw (dentry, buffer,PAGE_SIZE ); + path =dentry_path_raw (dentry, buffer,PATH_MAX );if (IS_ERR (path)) rc =PTR_ERR (path);else {@@ -1361,7 +1361,7 @@ static int selinux_genfs_get_sid(struct dentry *dentry, rc =0 ; } } -free_page ((unsigned long )buffer); +kfree (buffer);return rc; } ---base-commit:
dc59e4fea9d83f03bad6bddf3fa2e52491777482
change-id: 20260520-security-6cdd60da7129Best regards,
Signature · 2 lines
Sincerely yours, Mike.
Signature · 2 lines
Sincerely yours, Mike.
Paul Moore
maintainerQuoted 4 lines · Mike Rapoport
Should have been:
Subject: [PATCH v4] selinux: hooks: use
kmalloc()to allocate path buffer
No worries, I just merged the v3 patchset, it applied cleanly.
Quoted 72 lines · Mike Rapoport (Microsoft)
Quoted 62 lines
selinux_genfs_get_sid()allocates memory for a path with__get_free_page().Such usage does not require a "page" and the size of the buffer should actually be
PATH_MAXwhich may be less thanPAGE_SIZEon some architectures.Replace
__get_free_page()for allocation of a path buffer withkmalloc()and make it explicit that the buffer size isPATH_MAX.Acked-by Stephen Smalley <[email protected]>Signed-off-by Mike Rapoport (Microsoft) <[email protected]>---
This is a (tiny) part of larger work of replacing page allocator calls with kmalloc:Also in git:
https://git.kernel.org/pub/scm/linux/kernel/git/rppt/linux.git gfp-to-kmalloc/security
---
v4 changes:
* rebase on v7.2-rc1v3: https://lore.kernel.org/all/[email protected]
* get the args in the right orderv2: https://lore.kernel.org/all/[email protected]
* explicitly usekmalloc()withPATH_MAX--- security/selinux/hooks.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)security/selinux/hooks.c +3
-4@@ -1336,11 +1336,11 @@ static int selinux_genfs_get_sid(struct dentry *dentry,struct super_block *sb = dentry->d_sb;char *buffer, *path; - buffer = (char *)__get_free_page (GFP_KERNEL ); + buffer =kmalloc (PATH_MAX ,GFP_KERNEL );if (!buffer)return -ENOMEM ; - path =dentry_path_raw (dentry, buffer,PAGE_SIZE ); + path =dentry_path_raw (dentry, buffer,PATH_MAX );if (IS_ERR (path)) rc =PTR_ERR (path);else {@@ -1361,7 +1361,7 @@ static int selinux_genfs_get_sid(struct dentry *dentry, rc =0 ; } } -free_page ((unsigned long )buffer); +kfree (buffer);return rc; } ---base-commit:
dc59e4fea9d83f03bad6bddf3fa2e52491777482
change-id: 20260520-security-6cdd60da7129Quoted 5 lines
Best regards,
--
Sincerely yours,
Mike.--
Sincerely yours,
Mike.
Signature · 1 line
paul-moore.com
Quoted 7 lines · Paul Moore
Quoted 4 lines · Mike Rapoport
Should have been:
Subject: [PATCH v4] selinux: hooks: use
kmalloc()to allocate path bufferNo worries, I just merged the v3 patchset, it applied cleanly.
Thanks, Paul!
Signature · 2 lines
Sincerely yours, Mike.
[email protected]
AI reviewSashiko has reviewed this patch and found no issues. It looks great!
Quoted 11 lines
selinux_genfs_get_sid()allocates memory for a path with__get_free_page().Such usage does not require a "page" and the size of the buffer should actually be
PATH_MAXwhich may be less thanPAGE_SIZEon some architectures.Replace
__get_free_page()for allocation of a path buffer withkmalloc()and make it explicit that the buffer size isPATH_MAX.Acked-by Stephen Smalley <[email protected]>Signed-off-by Mike Rapoport (Microsoft) <[email protected]>
Sashiko has reviewed this patch and found no issues. It looks great!
Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=1