[PATCH 3/4] device_cgroup: stop using simple_strtoul()
From: Aristeu Rozanski <hidden>
Date: 2012-10-22 13:45:55
Also in:
lkml
This patch converts the code to use kstrtou32() instead of simple_strtoul() which is deprecated. The real size of the variables are u32, so use kstrtou32 instead of kstrtoul Cc: Dave Jones <redacted> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Tejun Heo <tj@kernel.org> Cc: Li Zefan <redacted> Cc: James Morris <jmorris@namei.org> Cc: Pavel Emelyanov <redacted> Cc: Serge Hallyn <redacted> Cc: Jiri Slaby <redacted> Signed-off-by: Aristeu Rozanski <redacted> --- security/device_cgroup.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-)
--- github.orig/security/device_cgroup.c 2012-10-19 16:35:46.366102913 -0400
+++ github/security/device_cgroup.c 2012-10-19 16:35:50.801229331 -0400@@ -361,8 +361,8 @@ static int devcgroup_update_access(struc int filetype, const char *buffer) { const char *b; - char *endp; - int count; + char temp[12]; /* 11 + 1 characters needed for a u32 */ + int count, rc; struct dev_exception_item ex; if (!capable(CAP_SYS_ADMIN))
@@ -405,8 +405,16 @@ return 0; ex.major = ~0; b++; } else if (isdigit(*b)) { - ex.major = simple_strtoul(b, &endp, 10); - b = endp; + memset(temp, 0, sizeof(temp)); + for (count = 0; count < sizeof(temp) - 1; count++) { + temp[count] = *b; + b++; + if (!isdigit(*b)) + break; + } + rc = kstrtou32(temp, 10, &ex.major); + if (rc) + return -EINVAL; } else { return -EINVAL; }
@@ -419,8 +427,16 @@ ex.major = simple_strtoul(b, &endp, 10 ex.minor = ~0; b++; } else if (isdigit(*b)) { - ex.minor = simple_strtoul(b, &endp, 10); - b = endp; + memset(temp, 0, sizeof(temp)); + for (count = 0; count < sizeof(temp) - 1; count++) { + temp[count] = *b; + b++; + if (!isdigit(*b)) + break; + } + rc = kstrtou32(temp, 10, &ex.minor); + if (rc) + return -EINVAL; } else { return -EINVAL; }