* [PATCH 0/4] sysctl: move sysctl type to ctl_table_header
@ 2024-02-22 7:07 Thomas Weißschuh
2024-02-22 7:07 ` [PATCH 1/4] sysctl: drop sysctl_is_perm_empty_ctl_table Thomas Weißschuh
` (5 more replies)
0 siblings, 6 replies; 10+ messages in thread
From: Thomas Weißschuh @ 2024-02-22 7:07 UTC (permalink / raw)
To: Eric W. Biederman, Luis Chamberlain, Kees Cook, Joel Granados
Cc: linux-kernel, linux-fsdevel, Thomas Weißschuh
Praparation series to enable constification of struct ctl_table further
down the line.
No functional changes are intended.
These changes have been split out and reworked from my original
const sysctl patchset [0].
I'm resubmitting the patchset in smaller chunks for easier review.
Each split-out series is meant to be useful on its own.
Changes since the original series:
* Explicit initializartion of header->type in init_header()
* Some additional cleanups
[0] https://lore.kernel.org/lkml/20231204-const-sysctl-v2-0-7a5060b11447@weissschuh.net/
---
Thomas Weißschuh (4):
sysctl: drop sysctl_is_perm_empty_ctl_table
sysctl: move sysctl type to ctl_table_header
sysctl: drop now unnecessary out-of-bounds check
sysctl: remove unnecessary sentinel element
fs/proc/proc_sysctl.c | 19 ++++++++-----------
include/linux/sysctl.h | 22 +++++++++++-----------
2 files changed, 19 insertions(+), 22 deletions(-)
---
base-commit: b401b621758e46812da61fa58a67c3fd8d91de0d
change-id: 20231216-sysctl-empty-dir-71d7631f7bfe
Best regards,
--
Thomas Weißschuh <linux@weissschuh.net>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/4] sysctl: drop sysctl_is_perm_empty_ctl_table
2024-02-22 7:07 [PATCH 0/4] sysctl: move sysctl type to ctl_table_header Thomas Weißschuh
@ 2024-02-22 7:07 ` Thomas Weißschuh
2024-03-19 15:44 ` Joel Granados
2024-02-22 7:07 ` [PATCH 2/4] sysctl: move sysctl type to ctl_table_header Thomas Weißschuh
` (4 subsequent siblings)
5 siblings, 1 reply; 10+ messages in thread
From: Thomas Weißschuh @ 2024-02-22 7:07 UTC (permalink / raw)
To: Eric W. Biederman, Luis Chamberlain, Kees Cook, Joel Granados
Cc: linux-kernel, linux-fsdevel, Thomas Weißschuh
It is used only twice and those callers are simpler with
sysctl_is_perm_empty_ctl_header().
So use this sibling function.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
fs/proc/proc_sysctl.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
index 37cde0efee57..2f4d4329d83d 100644
--- a/fs/proc/proc_sysctl.c
+++ b/fs/proc/proc_sysctl.c
@@ -48,10 +48,8 @@ struct ctl_table_header *register_sysctl_mount_point(const char *path)
}
EXPORT_SYMBOL(register_sysctl_mount_point);
-#define sysctl_is_perm_empty_ctl_table(tptr) \
- (tptr[0].type == SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY)
#define sysctl_is_perm_empty_ctl_header(hptr) \
- (sysctl_is_perm_empty_ctl_table(hptr->ctl_table))
+ (hptr->ctl_table[0].type == SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY)
#define sysctl_set_perm_empty_ctl_header(hptr) \
(hptr->ctl_table[0].type = SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY)
#define sysctl_clear_perm_empty_ctl_header(hptr) \
@@ -233,7 +231,7 @@ static int insert_header(struct ctl_dir *dir, struct ctl_table_header *header)
/* Am I creating a permanently empty directory? */
if (header->ctl_table_size > 0 &&
- sysctl_is_perm_empty_ctl_table(header->ctl_table)) {
+ sysctl_is_perm_empty_ctl_header(header)) {
if (!RB_EMPTY_ROOT(&dir->root))
return -EINVAL;
sysctl_set_perm_empty_ctl_header(dir_h);
@@ -1204,7 +1202,7 @@ static bool get_links(struct ctl_dir *dir,
struct ctl_table *entry, *link;
if (header->ctl_table_size == 0 ||
- sysctl_is_perm_empty_ctl_table(header->ctl_table))
+ sysctl_is_perm_empty_ctl_header(header))
return true;
/* Are there links available for every entry in table? */
--
2.43.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/4] sysctl: move sysctl type to ctl_table_header
2024-02-22 7:07 [PATCH 0/4] sysctl: move sysctl type to ctl_table_header Thomas Weißschuh
2024-02-22 7:07 ` [PATCH 1/4] sysctl: drop sysctl_is_perm_empty_ctl_table Thomas Weißschuh
@ 2024-02-22 7:07 ` Thomas Weißschuh
2024-03-19 15:43 ` Joel Granados
2024-02-22 7:07 ` [PATCH 3/4] sysctl: drop now unnecessary out-of-bounds check Thomas Weißschuh
` (3 subsequent siblings)
5 siblings, 1 reply; 10+ messages in thread
From: Thomas Weißschuh @ 2024-02-22 7:07 UTC (permalink / raw)
To: Eric W. Biederman, Luis Chamberlain, Kees Cook, Joel Granados
Cc: linux-kernel, linux-fsdevel, Thomas Weißschuh
As static initialization of the is not possible anymore move it into
init_header() where all the other header fields are also initialized.
Reduce memory consumption as there are less instances of
ctl_table_header than ctl_table.
Removing this mutable member also opens the way to constify static
instances of ctl_table.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
fs/proc/proc_sysctl.c | 10 ++++++----
include/linux/sysctl.h | 22 +++++++++++-----------
2 files changed, 17 insertions(+), 15 deletions(-)
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
index 2f4d4329d83d..fde7a2f773f0 100644
--- a/fs/proc/proc_sysctl.c
+++ b/fs/proc/proc_sysctl.c
@@ -31,7 +31,7 @@ static const struct inode_operations proc_sys_dir_operations;
/* Support for permanently empty directories */
static struct ctl_table sysctl_mount_point[] = {
- {.type = SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY }
+ { }
};
/**
@@ -49,11 +49,11 @@ struct ctl_table_header *register_sysctl_mount_point(const char *path)
EXPORT_SYMBOL(register_sysctl_mount_point);
#define sysctl_is_perm_empty_ctl_header(hptr) \
- (hptr->ctl_table[0].type == SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY)
+ (hptr->type == SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY)
#define sysctl_set_perm_empty_ctl_header(hptr) \
- (hptr->ctl_table[0].type = SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY)
+ (hptr->type = SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY)
#define sysctl_clear_perm_empty_ctl_header(hptr) \
- (hptr->ctl_table[0].type = SYSCTL_TABLE_TYPE_DEFAULT)
+ (hptr->type = SYSCTL_TABLE_TYPE_DEFAULT)
void proc_sys_poll_notify(struct ctl_table_poll *poll)
{
@@ -208,6 +208,8 @@ static void init_header(struct ctl_table_header *head,
node++;
}
}
+ if (table == sysctl_mount_point)
+ sysctl_set_perm_empty_ctl_header(head);
}
static void erase_header(struct ctl_table_header *head)
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
index ee7d33b89e9e..c87f73c06cb9 100644
--- a/include/linux/sysctl.h
+++ b/include/linux/sysctl.h
@@ -137,17 +137,6 @@ struct ctl_table {
void *data;
int maxlen;
umode_t mode;
- /**
- * enum type - Enumeration to differentiate between ctl target types
- * @SYSCTL_TABLE_TYPE_DEFAULT: ctl target with no special considerations
- * @SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY: Used to identify a permanently
- * empty directory target to serve
- * as mount point.
- */
- enum {
- SYSCTL_TABLE_TYPE_DEFAULT,
- SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY
- } type;
proc_handler *proc_handler; /* Callback for text formatting */
struct ctl_table_poll *poll;
void *extra1;
@@ -188,6 +177,17 @@ struct ctl_table_header {
struct ctl_dir *parent;
struct ctl_node *node;
struct hlist_head inodes; /* head for proc_inode->sysctl_inodes */
+ /**
+ * enum type - Enumeration to differentiate between ctl target types
+ * @SYSCTL_TABLE_TYPE_DEFAULT: ctl target with no special considerations
+ * @SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY: Used to identify a permanently
+ * empty directory target to serve
+ * as mount point.
+ */
+ enum {
+ SYSCTL_TABLE_TYPE_DEFAULT,
+ SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY,
+ } type;
};
struct ctl_dir {
--
2.43.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/4] sysctl: drop now unnecessary out-of-bounds check
2024-02-22 7:07 [PATCH 0/4] sysctl: move sysctl type to ctl_table_header Thomas Weißschuh
2024-02-22 7:07 ` [PATCH 1/4] sysctl: drop sysctl_is_perm_empty_ctl_table Thomas Weißschuh
2024-02-22 7:07 ` [PATCH 2/4] sysctl: move sysctl type to ctl_table_header Thomas Weißschuh
@ 2024-02-22 7:07 ` Thomas Weißschuh
2024-03-19 15:27 ` Joel Granados
2024-02-22 7:07 ` [PATCH 4/4] sysctl: remove unnecessary sentinel element Thomas Weißschuh
` (2 subsequent siblings)
5 siblings, 1 reply; 10+ messages in thread
From: Thomas Weißschuh @ 2024-02-22 7:07 UTC (permalink / raw)
To: Eric W. Biederman, Luis Chamberlain, Kees Cook, Joel Granados
Cc: linux-kernel, linux-fsdevel, Thomas Weißschuh
The type field is now part of the header so
sysctl_is_perm_empty_ctl_header() can safely be executed even without
any ctl_tables.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
fs/proc/proc_sysctl.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
index fde7a2f773f0..4cdf98c6a9a4 100644
--- a/fs/proc/proc_sysctl.c
+++ b/fs/proc/proc_sysctl.c
@@ -232,8 +232,7 @@ static int insert_header(struct ctl_dir *dir, struct ctl_table_header *header)
return -EROFS;
/* Am I creating a permanently empty directory? */
- if (header->ctl_table_size > 0 &&
- sysctl_is_perm_empty_ctl_header(header)) {
+ if (sysctl_is_perm_empty_ctl_header(header)) {
if (!RB_EMPTY_ROOT(&dir->root))
return -EINVAL;
sysctl_set_perm_empty_ctl_header(dir_h);
--
2.43.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 4/4] sysctl: remove unnecessary sentinel element
2024-02-22 7:07 [PATCH 0/4] sysctl: move sysctl type to ctl_table_header Thomas Weißschuh
` (2 preceding siblings ...)
2024-02-22 7:07 ` [PATCH 3/4] sysctl: drop now unnecessary out-of-bounds check Thomas Weißschuh
@ 2024-02-22 7:07 ` Thomas Weißschuh
2024-02-22 16:03 ` [PATCH 0/4] sysctl: move sysctl type to ctl_table_header Luis Chamberlain
[not found] ` <CGME20240319154938eucas1p10dd98f7dd53f3e91793bc8d0f34df1ec@eucas1p1.samsung.com>
5 siblings, 0 replies; 10+ messages in thread
From: Thomas Weißschuh @ 2024-02-22 7:07 UTC (permalink / raw)
To: Eric W. Biederman, Luis Chamberlain, Kees Cook, Joel Granados
Cc: linux-kernel, linux-fsdevel, Thomas Weißschuh
The previous commits made this sentinel element unnecessary, remove it.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
fs/proc/proc_sysctl.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
index 4cdf98c6a9a4..7c0e27dc3d9d 100644
--- a/fs/proc/proc_sysctl.c
+++ b/fs/proc/proc_sysctl.c
@@ -30,9 +30,7 @@ static const struct file_operations proc_sys_dir_file_operations;
static const struct inode_operations proc_sys_dir_operations;
/* Support for permanently empty directories */
-static struct ctl_table sysctl_mount_point[] = {
- { }
-};
+static struct ctl_table sysctl_mount_point[] = { };
/**
* register_sysctl_mount_point() - registers a sysctl mount point
--
2.43.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 0/4] sysctl: move sysctl type to ctl_table_header
2024-02-22 7:07 [PATCH 0/4] sysctl: move sysctl type to ctl_table_header Thomas Weißschuh
` (3 preceding siblings ...)
2024-02-22 7:07 ` [PATCH 4/4] sysctl: remove unnecessary sentinel element Thomas Weißschuh
@ 2024-02-22 16:03 ` Luis Chamberlain
[not found] ` <CGME20240319154938eucas1p10dd98f7dd53f3e91793bc8d0f34df1ec@eucas1p1.samsung.com>
5 siblings, 0 replies; 10+ messages in thread
From: Luis Chamberlain @ 2024-02-22 16:03 UTC (permalink / raw)
To: Thomas Weißschuh
Cc: Eric W. Biederman, Kees Cook, Joel Granados, linux-kernel,
linux-fsdevel
On Thu, Feb 22, 2024 at 08:07:35AM +0100, Thomas Weißschuh wrote:
> Praparation series to enable constification of struct ctl_table further
> down the line.
> No functional changes are intended.
>
> These changes have been split out and reworked from my original
> const sysctl patchset [0].
> I'm resubmitting the patchset in smaller chunks for easier review.
> Each split-out series is meant to be useful on its own.
>
> Changes since the original series:
> * Explicit initializartion of header->type in init_header()
> * Some additional cleanups
>
> [0] https://lore.kernel.org/lkml/20231204-const-sysctl-v2-0-7a5060b11447@weissschuh.net/
This all looks super sexy to me, but I'd love Eric's feedback on patch
series before merging as he may know some other facts over sysctl_mount_point
I might be missing.
Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>
Luis
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/4] sysctl: drop now unnecessary out-of-bounds check
2024-02-22 7:07 ` [PATCH 3/4] sysctl: drop now unnecessary out-of-bounds check Thomas Weißschuh
@ 2024-03-19 15:27 ` Joel Granados
0 siblings, 0 replies; 10+ messages in thread
From: Joel Granados @ 2024-03-19 15:27 UTC (permalink / raw)
To: Thomas Weißschuh
Cc: Eric W. Biederman, Luis Chamberlain, Kees Cook, linux-kernel,
linux-fsdevel
[-- Attachment #1: Type: text/plain, Size: 1470 bytes --]
On Thu, Feb 22, 2024 at 08:07:38AM +0100, Thomas Weißschuh wrote:
> The type field is now part of the header so
> sysctl_is_perm_empty_ctl_header() can safely be executed even without
> any ctl_tables.
Only comments on the commit message.
1. Can you please put this and your 4/4 patch together. Since 4/4 comes
is a result of this 3/4 patch, then they can be in one.
2. Please re-write the commit message to state what you did: Something
like : "Remove the now unneeded check for ctl_table_size; it is safe
to do so as it is now part of ctl_table_header.
3. Remember to mention the removal of the sentinel when you merge 3/4
and 4/4
>
> Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
> ---
> fs/proc/proc_sysctl.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
> index fde7a2f773f0..4cdf98c6a9a4 100644
> --- a/fs/proc/proc_sysctl.c
> +++ b/fs/proc/proc_sysctl.c
> @@ -232,8 +232,7 @@ static int insert_header(struct ctl_dir *dir, struct ctl_table_header *header)
> return -EROFS;
>
> /* Am I creating a permanently empty directory? */
> - if (header->ctl_table_size > 0 &&
> - sysctl_is_perm_empty_ctl_header(header)) {
> + if (sysctl_is_perm_empty_ctl_header(header)) {
> if (!RB_EMPTY_ROOT(&dir->root))
> return -EINVAL;
> sysctl_set_perm_empty_ctl_header(dir_h);
>
> --
> 2.43.2
>
--
Joel Granados
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/4] sysctl: move sysctl type to ctl_table_header
2024-02-22 7:07 ` [PATCH 2/4] sysctl: move sysctl type to ctl_table_header Thomas Weißschuh
@ 2024-03-19 15:43 ` Joel Granados
0 siblings, 0 replies; 10+ messages in thread
From: Joel Granados @ 2024-03-19 15:43 UTC (permalink / raw)
To: Thomas Weißschuh
Cc: Eric W. Biederman, Luis Chamberlain, Kees Cook, linux-kernel,
linux-fsdevel
[-- Attachment #1: Type: text/plain, Size: 4291 bytes --]
On Thu, Feb 22, 2024 at 08:07:37AM +0100, Thomas Weißschuh wrote:
> As static initialization of the is not possible anymore move it into
> init_header() where all the other header fields are also initialized.
Please say what was done. Something like: "Moved the
SYSCTL_TABLE_TYPE_{DEFAULT,PERMANENTLY_EMPTY} enumerations from
ctl_table to ctl_table_header."
And the then you can mention the why: "Removing the mutable memeber from
ctl_table opens the ...."
>
> Reduce memory consumption as there are less instances of
> ctl_table_header than ctl_table.
This is indeed true, but the main reasoning behind this is
constification. Right? If you want to leave this comment, I would
suggest you add something that talks about the amount of bytes saved.
Something like : "Reduce memory consumption by sizeof(int) for every
ctl_table entry in ctl_table_header". Or something similar.
>
> Removing this mutable member also opens the way to constify static
> instances of ctl_table.
>
> Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
> ---
> fs/proc/proc_sysctl.c | 10 ++++++----
> include/linux/sysctl.h | 22 +++++++++++-----------
> 2 files changed, 17 insertions(+), 15 deletions(-)
>
> diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
> index 2f4d4329d83d..fde7a2f773f0 100644
> --- a/fs/proc/proc_sysctl.c
> +++ b/fs/proc/proc_sysctl.c
> @@ -31,7 +31,7 @@ static const struct inode_operations proc_sys_dir_operations;
>
> /* Support for permanently empty directories */
> static struct ctl_table sysctl_mount_point[] = {
> - {.type = SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY }
> + { }
> };
>
> /**
> @@ -49,11 +49,11 @@ struct ctl_table_header *register_sysctl_mount_point(const char *path)
> EXPORT_SYMBOL(register_sysctl_mount_point);
>
> #define sysctl_is_perm_empty_ctl_header(hptr) \
> - (hptr->ctl_table[0].type == SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY)
> + (hptr->type == SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY)
> #define sysctl_set_perm_empty_ctl_header(hptr) \
> - (hptr->ctl_table[0].type = SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY)
> + (hptr->type = SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY)
> #define sysctl_clear_perm_empty_ctl_header(hptr) \
> - (hptr->ctl_table[0].type = SYSCTL_TABLE_TYPE_DEFAULT)
> + (hptr->type = SYSCTL_TABLE_TYPE_DEFAULT)
>
> void proc_sys_poll_notify(struct ctl_table_poll *poll)
> {
> @@ -208,6 +208,8 @@ static void init_header(struct ctl_table_header *head,
> node++;
> }
> }
> + if (table == sysctl_mount_point)
> + sysctl_set_perm_empty_ctl_header(head);
> }
>
> static void erase_header(struct ctl_table_header *head)
> diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
> index ee7d33b89e9e..c87f73c06cb9 100644
> --- a/include/linux/sysctl.h
> +++ b/include/linux/sysctl.h
> @@ -137,17 +137,6 @@ struct ctl_table {
> void *data;
> int maxlen;
> umode_t mode;
> - /**
> - * enum type - Enumeration to differentiate between ctl target types
> - * @SYSCTL_TABLE_TYPE_DEFAULT: ctl target with no special considerations
> - * @SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY: Used to identify a permanently
> - * empty directory target to serve
> - * as mount point.
> - */
> - enum {
> - SYSCTL_TABLE_TYPE_DEFAULT,
> - SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY
> - } type;
> proc_handler *proc_handler; /* Callback for text formatting */
> struct ctl_table_poll *poll;
> void *extra1;
> @@ -188,6 +177,17 @@ struct ctl_table_header {
> struct ctl_dir *parent;
> struct ctl_node *node;
> struct hlist_head inodes; /* head for proc_inode->sysctl_inodes */
> + /**
> + * enum type - Enumeration to differentiate between ctl target types
> + * @SYSCTL_TABLE_TYPE_DEFAULT: ctl target with no special considerations
> + * @SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY: Used to identify a permanently
> + * empty directory target to serve
> + * as mount point.
> + */
> + enum {
> + SYSCTL_TABLE_TYPE_DEFAULT,
> + SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY,
> + } type;
> };
>
> struct ctl_dir {
>
> --
> 2.43.2
>
--
Joel Granados
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/4] sysctl: drop sysctl_is_perm_empty_ctl_table
2024-02-22 7:07 ` [PATCH 1/4] sysctl: drop sysctl_is_perm_empty_ctl_table Thomas Weißschuh
@ 2024-03-19 15:44 ` Joel Granados
0 siblings, 0 replies; 10+ messages in thread
From: Joel Granados @ 2024-03-19 15:44 UTC (permalink / raw)
To: Thomas Weißschuh
Cc: Eric W. Biederman, Luis Chamberlain, Kees Cook, linux-kernel,
linux-fsdevel
[-- Attachment #1: Type: text/plain, Size: 2042 bytes --]
On Thu, Feb 22, 2024 at 08:07:36AM +0100, Thomas Weißschuh wrote:
> It is used only twice and those callers are simpler with
> sysctl_is_perm_empty_ctl_header().
> So use this sibling function.
Can you please add a comment relating this to the constification effort.
>
> Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
> ---
> fs/proc/proc_sysctl.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
> index 37cde0efee57..2f4d4329d83d 100644
> --- a/fs/proc/proc_sysctl.c
> +++ b/fs/proc/proc_sysctl.c
> @@ -48,10 +48,8 @@ struct ctl_table_header *register_sysctl_mount_point(const char *path)
> }
> EXPORT_SYMBOL(register_sysctl_mount_point);
>
> -#define sysctl_is_perm_empty_ctl_table(tptr) \
> - (tptr[0].type == SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY)
> #define sysctl_is_perm_empty_ctl_header(hptr) \
> - (sysctl_is_perm_empty_ctl_table(hptr->ctl_table))
> + (hptr->ctl_table[0].type == SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY)
> #define sysctl_set_perm_empty_ctl_header(hptr) \
> (hptr->ctl_table[0].type = SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY)
> #define sysctl_clear_perm_empty_ctl_header(hptr) \
> @@ -233,7 +231,7 @@ static int insert_header(struct ctl_dir *dir, struct ctl_table_header *header)
>
> /* Am I creating a permanently empty directory? */
> if (header->ctl_table_size > 0 &&
> - sysctl_is_perm_empty_ctl_table(header->ctl_table)) {
> + sysctl_is_perm_empty_ctl_header(header)) {
> if (!RB_EMPTY_ROOT(&dir->root))
> return -EINVAL;
> sysctl_set_perm_empty_ctl_header(dir_h);
> @@ -1204,7 +1202,7 @@ static bool get_links(struct ctl_dir *dir,
> struct ctl_table *entry, *link;
>
> if (header->ctl_table_size == 0 ||
> - sysctl_is_perm_empty_ctl_table(header->ctl_table))
> + sysctl_is_perm_empty_ctl_header(header))
> return true;
>
> /* Are there links available for every entry in table? */
>
> --
> 2.43.2
>
--
Joel Granados
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/4] sysctl: move sysctl type to ctl_table_header
[not found] ` <CGME20240319154938eucas1p10dd98f7dd53f3e91793bc8d0f34df1ec@eucas1p1.samsung.com>
@ 2024-03-19 15:49 ` Joel Granados
0 siblings, 0 replies; 10+ messages in thread
From: Joel Granados @ 2024-03-19 15:49 UTC (permalink / raw)
To: Thomas Weißschuh
Cc: Eric W. Biederman, Luis Chamberlain, Kees Cook, linux-kernel,
linux-fsdevel
[-- Attachment #1: Type: text/plain, Size: 1533 bytes --]
On Thu, Feb 22, 2024 at 08:07:35AM +0100, Thomas Weißschuh wrote:
> Praparation series to enable constification of struct ctl_table further
> down the line.
> No functional changes are intended.
Took me some time but I finally got around to it. I just had comments
regarding the commit messages. I'll add this to sysctl testing to get
the ball rolling; I'll add it to sysctl-next after you modify the commit
messages.
Thx.
>
> These changes have been split out and reworked from my original
> const sysctl patchset [0].
> I'm resubmitting the patchset in smaller chunks for easier review.
> Each split-out series is meant to be useful on its own.
>
> Changes since the original series:
> * Explicit initializartion of header->type in init_header()
> * Some additional cleanups
>
> [0] https://lore.kernel.org/lkml/20231204-const-sysctl-v2-0-7a5060b11447@weissschuh.net/
>
> ---
> Thomas Weißschuh (4):
> sysctl: drop sysctl_is_perm_empty_ctl_table
> sysctl: move sysctl type to ctl_table_header
> sysctl: drop now unnecessary out-of-bounds check
> sysctl: remove unnecessary sentinel element
>
> fs/proc/proc_sysctl.c | 19 ++++++++-----------
> include/linux/sysctl.h | 22 +++++++++++-----------
> 2 files changed, 19 insertions(+), 22 deletions(-)
> ---
> base-commit: b401b621758e46812da61fa58a67c3fd8d91de0d
> change-id: 20231216-sysctl-empty-dir-71d7631f7bfe
>
> Best regards,
> --
> Thomas Weißschuh <linux@weissschuh.net>
>
--
Joel Granados
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2024-03-19 15:49 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-22 7:07 [PATCH 0/4] sysctl: move sysctl type to ctl_table_header Thomas Weißschuh
2024-02-22 7:07 ` [PATCH 1/4] sysctl: drop sysctl_is_perm_empty_ctl_table Thomas Weißschuh
2024-03-19 15:44 ` Joel Granados
2024-02-22 7:07 ` [PATCH 2/4] sysctl: move sysctl type to ctl_table_header Thomas Weißschuh
2024-03-19 15:43 ` Joel Granados
2024-02-22 7:07 ` [PATCH 3/4] sysctl: drop now unnecessary out-of-bounds check Thomas Weißschuh
2024-03-19 15:27 ` Joel Granados
2024-02-22 7:07 ` [PATCH 4/4] sysctl: remove unnecessary sentinel element Thomas Weißschuh
2024-02-22 16:03 ` [PATCH 0/4] sysctl: move sysctl type to ctl_table_header Luis Chamberlain
[not found] ` <CGME20240319154938eucas1p10dd98f7dd53f3e91793bc8d0f34df1ec@eucas1p1.samsung.com>
2024-03-19 15:49 ` Joel Granados
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).