2020-04-07 15:48:46

by Jan Kara

[permalink] [raw]
Subject: [PATCH] ucount: Make sure ucounts in /proc/sys/user don't regress again

Commit 769071ac9f20 "ns: Introduce Time Namespace" broke reporting of
inotify ucounts (max_inotify_instances, max_inotify_watches) in
/proc/sys/user because it has added UCOUNT_TIME_NAMESPACES into enum
ucount_type but didn't properly update reporting in
kernel/ucount.c:setup_userns_sysctls(). This problem got fixed in commit
eeec26d5da82 "time/namespace: Add max_time_namespaces ucount". Add
BUILD_BUG_ON to catch a similar problem in the future.

Signed-off-by: Jan Kara <[email protected]>
---
kernel/ucount.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/kernel/ucount.c b/kernel/ucount.c
index a53cc2b4179c..3da4d868e452 100644
--- a/kernel/ucount.c
+++ b/kernel/ucount.c
@@ -81,6 +81,8 @@ bool setup_userns_sysctls(struct user_namespace *ns)
{
#ifdef CONFIG_SYSCTL
struct ctl_table *tbl;
+
+ BUILD_BUG_ON(ARRAY_SIZE(user_table) != UCOUNT_COUNTS + 1);
setup_sysctl_set(&ns->set, &set_root, set_is_seen);
tbl = kmemdup(user_table, sizeof(user_table), GFP_KERNEL);
if (tbl) {
--
2.16.4


2020-04-07 16:08:24

by Andrei Vagin

[permalink] [raw]
Subject: Re: [PATCH] ucount: Make sure ucounts in /proc/sys/user don't regress again

On Tue, Apr 7, 2020 at 8:46 AM Jan Kara <[email protected]> wrote:
>
> Commit 769071ac9f20 "ns: Introduce Time Namespace" broke reporting of
> inotify ucounts (max_inotify_instances, max_inotify_watches) in
> /proc/sys/user because it has added UCOUNT_TIME_NAMESPACES into enum
> ucount_type but didn't properly update reporting in
> kernel/ucount.c:setup_userns_sysctls(). This problem got fixed in commit
> eeec26d5da82 "time/namespace: Add max_time_namespaces ucount". Add
> BUILD_BUG_ON to catch a similar problem in the future.
>

Acked-by: Andrei Vagin <[email protected]>

> Signed-off-by: Jan Kara <[email protected]>
> ---
> kernel/ucount.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/kernel/ucount.c b/kernel/ucount.c
> index a53cc2b4179c..3da4d868e452 100644
> --- a/kernel/ucount.c
> +++ b/kernel/ucount.c
> @@ -81,6 +81,8 @@ bool setup_userns_sysctls(struct user_namespace *ns)
> {
> #ifdef CONFIG_SYSCTL
> struct ctl_table *tbl;
> +
> + BUILD_BUG_ON(ARRAY_SIZE(user_table) != UCOUNT_COUNTS + 1);
> setup_sysctl_set(&ns->set, &set_root, set_is_seen);
> tbl = kmemdup(user_table, sizeof(user_table), GFP_KERNEL);
> if (tbl) {
> --
> 2.16.4
>

Subject: [tip: timers/urgent] ucount: Make sure ucounts in /proc/sys/user don't regress again

The following commit has been merged into the timers/urgent branch of tip:

Commit-ID: 0f538e3e712a517bd351607de50cd298102c7c08
Gitweb: https://git.kernel.org/tip/0f538e3e712a517bd351607de50cd298102c7c08
Author: Jan Kara <[email protected]>
AuthorDate: Tue, 07 Apr 2020 17:46:43 +02:00
Committer: Thomas Gleixner <[email protected]>
CommitterDate: Tue, 07 Apr 2020 21:51:27 +02:00

ucount: Make sure ucounts in /proc/sys/user don't regress again

Commit 769071ac9f20 "ns: Introduce Time Namespace" broke reporting of
inotify ucounts (max_inotify_instances, max_inotify_watches) in
/proc/sys/user because it has added UCOUNT_TIME_NAMESPACES into enum
ucount_type but didn't properly update reporting in
kernel/ucount.c:setup_userns_sysctls(). This problem got fixed in commit
eeec26d5da82 "time/namespace: Add max_time_namespaces ucount".

Add BUILD_BUG_ON to catch a similar problem in the future.

Signed-off-by: Jan Kara <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Acked-by: Andrei Vagin <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]

---
kernel/ucount.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/kernel/ucount.c b/kernel/ucount.c
index 29c60eb..11b1596 100644
--- a/kernel/ucount.c
+++ b/kernel/ucount.c
@@ -82,6 +82,8 @@ bool setup_userns_sysctls(struct user_namespace *ns)
{
#ifdef CONFIG_SYSCTL
struct ctl_table *tbl;
+
+ BUILD_BUG_ON(ARRAY_SIZE(user_table) != UCOUNT_COUNTS + 1);
setup_sysctl_set(&ns->set, &set_root, set_is_seen);
tbl = kmemdup(user_table, sizeof(user_table), GFP_KERNEL);
if (tbl) {