* [PATCH 0/3] sched: sched_setattr/sched_getattr fixes and improvements @ 2014-05-09 14:49 Michael Kerrisk (man-pages) 2014-05-09 14:54 ` [PATCH 1/3] sched: Make sched_setattr() correctly return -EFBIG Michael Kerrisk (man-pages) ` (3 more replies) 0 siblings, 4 replies; 14+ messages in thread From: Michael Kerrisk (man-pages) @ 2014-05-09 14:49 UTC (permalink / raw) To: Peter Zijlstra Cc: mtk.manpages, lkml, Juri Lelli, Dario Faggioli, Ingo Molnar Peter, While looking at your sched_setattr()/sched_getatr() documentation, I noticed a bug in the handling of -EFBIG, and a couple of places in the code where the error handling logic could be streamlined. Patches follow. Cheers, Michael -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 1/3] sched: Make sched_setattr() correctly return -EFBIG 2014-05-09 14:49 [PATCH 0/3] sched: sched_setattr/sched_getattr fixes and improvements Michael Kerrisk (man-pages) @ 2014-05-09 14:54 ` Michael Kerrisk (man-pages) 2014-05-14 3:23 ` Michael Kerrisk (man-pages) ` (2 more replies) 2014-05-09 14:54 ` [PATCH 2/3] sched: Simplify return logic in sched_copy_attr() Michael Kerrisk (man-pages) ` (2 subsequent siblings) 3 siblings, 3 replies; 14+ messages in thread From: Michael Kerrisk (man-pages) @ 2014-05-09 14:54 UTC (permalink / raw) To: Peter Zijlstra Cc: mtk.manpages, lkml, Juri Lelli, Dario Faggioli, Ingo Molnar, linux-man From: Michael Kerrisk <mtk.manpages@gmail.com> The documented[1] behavior of sched_attr() in your proposed man page text is: sched_attr::size must be set to the size of the structure, as in sizeof(struct sched_attr), if the provided structure is smaller than the kernel structure, any additional fields are assumed '0'. If the provided structure is larger than the kernel structure, the kernel verifies all additional fields are '0' if not the syscall will fail with -E2BIG. As currently implemented, sched_copy_attr() returns -EFBIG for for this case, but the logic in sys_sched_setattr() converts that error to -EFAULT. This patch fixes the behavior. [1] http://thread.gmane.org/gmane.linux.kernel/1615615/focus=1697760 Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com> --- kernel/sched/core.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 268a45e..6c9ce28 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3650,8 +3650,9 @@ SYSCALL_DEFINE3(sched_setattr, pid_t, pid, struct sched_attr __user *, uattr, if (!uattr || pid < 0 || flags) return -EINVAL; - if (sched_copy_attr(uattr, &attr)) - return -EFAULT; + retval = sched_copy_attr(uattr, &attr); + if (retval) + return retval; rcu_read_lock(); retval = -ESRCH; -- 1.9.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 1/3] sched: Make sched_setattr() correctly return -EFBIG 2014-05-09 14:54 ` [PATCH 1/3] sched: Make sched_setattr() correctly return -EFBIG Michael Kerrisk (man-pages) @ 2014-05-14 3:23 ` Michael Kerrisk (man-pages) 2014-05-19 13:06 ` [tip:sched/core] " tip-bot for Michael Kerrisk 2014-05-22 12:24 ` tip-bot for Michael Kerrisk 2 siblings, 0 replies; 14+ messages in thread From: Michael Kerrisk (man-pages) @ 2014-05-14 3:23 UTC (permalink / raw) To: Peter Zijlstra Cc: mtk.manpages, lkml, Juri Lelli, Dario Faggioli, Ingo Molnar, linux-man Peter, In the title of this patch, EFBIG should have been E2BIG. Shall I resubmit a corrected version? Cheers, Michael On 05/09/2014 04:54 PM, Michael Kerrisk (man-pages) wrote: > From: Michael Kerrisk <mtk.manpages@gmail.com> > > The documented[1] behavior of sched_attr() in your proposed man page text is: > > sched_attr::size must be set to the size of the structure, as in > sizeof(struct sched_attr), if the provided structure is smaller > than the kernel structure, any additional fields are assumed > '0'. If the provided structure is larger than the kernel structure, > the kernel verifies all additional fields are '0' if not the > syscall will fail with -E2BIG. > > As currently implemented, sched_copy_attr() returns -EFBIG for > for this case, but the logic in sys_sched_setattr() converts that > error to -EFAULT. This patch fixes the behavior. > > [1] http://thread.gmane.org/gmane.linux.kernel/1615615/focus=1697760 > > Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com> > --- > kernel/sched/core.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index 268a45e..6c9ce28 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -3650,8 +3650,9 @@ SYSCALL_DEFINE3(sched_setattr, pid_t, pid, struct sched_attr __user *, uattr, > if (!uattr || pid < 0 || flags) > return -EINVAL; > > - if (sched_copy_attr(uattr, &attr)) > - return -EFAULT; > + retval = sched_copy_attr(uattr, &attr); > + if (retval) > + return retval; > > rcu_read_lock(); > retval = -ESRCH; > -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ ^ permalink raw reply [flat|nested] 14+ messages in thread
* [tip:sched/core] sched: Make sched_setattr() correctly return -EFBIG 2014-05-09 14:54 ` [PATCH 1/3] sched: Make sched_setattr() correctly return -EFBIG Michael Kerrisk (man-pages) 2014-05-14 3:23 ` Michael Kerrisk (man-pages) @ 2014-05-19 13:06 ` tip-bot for Michael Kerrisk 2014-05-22 12:24 ` tip-bot for Michael Kerrisk 2 siblings, 0 replies; 14+ messages in thread From: tip-bot for Michael Kerrisk @ 2014-05-19 13:06 UTC (permalink / raw) To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, peterz, tglx, mtk.manpages Commit-ID: 51b2b2dc49a8a053de58b836be7efd2401a88699 Gitweb: http://git.kernel.org/tip/51b2b2dc49a8a053de58b836be7efd2401a88699 Author: Michael Kerrisk <mtk.manpages@gmail.com> AuthorDate: Fri, 9 May 2014 16:54:15 +0200 Committer: Thomas Gleixner <tglx@linutronix.de> CommitDate: Mon, 19 May 2014 21:47:33 +0900 sched: Make sched_setattr() correctly return -EFBIG The documented[1] behavior of sched_attr() in your proposed man page text is: sched_attr::size must be set to the size of the structure, as in sizeof(struct sched_attr), if the provided structure is smaller than the kernel structure, any additional fields are assumed '0'. If the provided structure is larger than the kernel structure, the kernel verifies all additional fields are '0' if not the syscall will fail with -E2BIG. As currently implemented, sched_copy_attr() returns -EFBIG for for this case, but the logic in sys_sched_setattr() converts that error to -EFAULT. This patch fixes the behavior. [1] http://thread.gmane.org/gmane.linux.kernel/1615615/focus=1697760 Cc: stable@vger.kernel.org Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/536CEC17.9070903@gmail.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- kernel/sched/core.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 13584f1..f2205f0 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3658,8 +3658,9 @@ SYSCALL_DEFINE3(sched_setattr, pid_t, pid, struct sched_attr __user *, uattr, if (!uattr || pid < 0 || flags) return -EINVAL; - if (sched_copy_attr(uattr, &attr)) - return -EFAULT; + retval = sched_copy_attr(uattr, &attr); + if (retval) + return retval; rcu_read_lock(); retval = -ESRCH; ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [tip:sched/core] sched: Make sched_setattr() correctly return -EFBIG 2014-05-09 14:54 ` [PATCH 1/3] sched: Make sched_setattr() correctly return -EFBIG Michael Kerrisk (man-pages) 2014-05-14 3:23 ` Michael Kerrisk (man-pages) 2014-05-19 13:06 ` [tip:sched/core] " tip-bot for Michael Kerrisk @ 2014-05-22 12:24 ` tip-bot for Michael Kerrisk 2 siblings, 0 replies; 14+ messages in thread From: tip-bot for Michael Kerrisk @ 2014-05-22 12:24 UTC (permalink / raw) To: linux-tip-commits Cc: linux-kernel, hpa, mingo, torvalds, peterz, stable, tglx, mtk.manpages Commit-ID: 143cf23df25b7082cd706c3c53188e741e7881c3 Gitweb: http://git.kernel.org/tip/143cf23df25b7082cd706c3c53188e741e7881c3 Author: Michael Kerrisk <mtk.manpages@gmail.com> AuthorDate: Fri, 9 May 2014 16:54:15 +0200 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Thu, 22 May 2014 10:21:25 +0200 sched: Make sched_setattr() correctly return -EFBIG The documented[1] behavior of sched_attr() in the proposed man page text is: sched_attr::size must be set to the size of the structure, as in sizeof(struct sched_attr), if the provided structure is smaller than the kernel structure, any additional fields are assumed '0'. If the provided structure is larger than the kernel structure, the kernel verifies all additional fields are '0' if not the syscall will fail with -E2BIG. As currently implemented, sched_copy_attr() returns -EFBIG for for this case, but the logic in sys_sched_setattr() converts that error to -EFAULT. This patch fixes the behavior. [1] http://thread.gmane.org/gmane.linux.kernel/1615615/focus=1697760 Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Cc: <stable@vger.kernel.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: http://lkml.kernel.org/r/536CEC17.9070903@gmail.com Signed-off-by: Ingo Molnar <mingo@kernel.org> --- kernel/sched/core.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 13584f1..f2205f0 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3658,8 +3658,9 @@ SYSCALL_DEFINE3(sched_setattr, pid_t, pid, struct sched_attr __user *, uattr, if (!uattr || pid < 0 || flags) return -EINVAL; - if (sched_copy_attr(uattr, &attr)) - return -EFAULT; + retval = sched_copy_attr(uattr, &attr); + if (retval) + return retval; rcu_read_lock(); retval = -ESRCH; ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 2/3] sched: Simplify return logic in sched_copy_attr() 2014-05-09 14:49 [PATCH 0/3] sched: sched_setattr/sched_getattr fixes and improvements Michael Kerrisk (man-pages) 2014-05-09 14:54 ` [PATCH 1/3] sched: Make sched_setattr() correctly return -EFBIG Michael Kerrisk (man-pages) @ 2014-05-09 14:54 ` Michael Kerrisk (man-pages) 2014-05-19 13:08 ` [tip:sched/core] sched: Simplify return logic in sched_copy_attr( ) tip-bot for Michael Kerrisk 2014-05-22 12:26 ` tip-bot for Michael Kerrisk 2014-05-09 14:54 ` [PATCH 3/3] sched: Simplify return logic in sched_read_attr() Michael Kerrisk (man-pages) 2014-05-09 17:16 ` [PATCH 0/3] sched: sched_setattr/sched_getattr fixes and improvements Peter Zijlstra 3 siblings, 2 replies; 14+ messages in thread From: Michael Kerrisk (man-pages) @ 2014-05-09 14:54 UTC (permalink / raw) To: Peter Zijlstra Cc: mtk.manpages, lkml, Juri Lelli, Dario Faggioli, Ingo Molnar From: Michael Kerrisk <mtk.manpages@gmail.com> The logic in this function is a little contorted: * Rather than having chained gotos for the -EFBIG case, just return -EFBIG directly. * Now, the label 'out' is no longer needed, and 'ret' must be zero zero by the time we fall through to this point, so just return 0. Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com> --- kernel/sched/core.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 6c9ce28..8fa3e12 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3596,13 +3596,11 @@ static int sched_copy_attr(struct sched_attr __user *uattr, */ attr->sched_nice = clamp(attr->sched_nice, MIN_NICE, MAX_NICE); -out: - return ret; + return 0; err_size: put_user(sizeof(*attr), &uattr->size); - ret = -E2BIG; - goto out; + return -E2BIG; } /** -- 1.9.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [tip:sched/core] sched: Simplify return logic in sched_copy_attr( ) 2014-05-09 14:54 ` [PATCH 2/3] sched: Simplify return logic in sched_copy_attr() Michael Kerrisk (man-pages) @ 2014-05-19 13:08 ` tip-bot for Michael Kerrisk 2014-05-22 12:26 ` tip-bot for Michael Kerrisk 1 sibling, 0 replies; 14+ messages in thread From: tip-bot for Michael Kerrisk @ 2014-05-19 13:08 UTC (permalink / raw) To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, peterz, tglx, mtk.manpages Commit-ID: 814927325e815b667a133d9dcdf2286f88b78328 Gitweb: http://git.kernel.org/tip/814927325e815b667a133d9dcdf2286f88b78328 Author: Michael Kerrisk <mtk.manpages@gmail.com> AuthorDate: Fri, 9 May 2014 16:54:28 +0200 Committer: Thomas Gleixner <tglx@linutronix.de> CommitDate: Mon, 19 May 2014 22:02:39 +0900 sched: Simplify return logic in sched_copy_attr() The logic in this function is a little contorted: * Rather than having chained gotos for the -EFBIG case, just return -EFBIG directly. * Now, the label 'out' is no longer needed, and 'ret' must be zero zero by the time we fall through to this point, so just return 0. Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/536CEC24.9080201@gmail.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- kernel/sched/core.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 9e1a3e0..08b6355 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3657,13 +3657,11 @@ static int sched_copy_attr(struct sched_attr __user *uattr, */ attr->sched_nice = clamp(attr->sched_nice, MIN_NICE, MAX_NICE); -out: - return ret; + return 0; err_size: put_user(sizeof(*attr), &uattr->size); - ret = -E2BIG; - goto out; + return -E2BIG; } /** ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [tip:sched/core] sched: Simplify return logic in sched_copy_attr( ) 2014-05-09 14:54 ` [PATCH 2/3] sched: Simplify return logic in sched_copy_attr() Michael Kerrisk (man-pages) 2014-05-19 13:08 ` [tip:sched/core] sched: Simplify return logic in sched_copy_attr( ) tip-bot for Michael Kerrisk @ 2014-05-22 12:26 ` tip-bot for Michael Kerrisk 1 sibling, 0 replies; 14+ messages in thread From: tip-bot for Michael Kerrisk @ 2014-05-22 12:26 UTC (permalink / raw) To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, peterz, tglx, mtk.manpages Commit-ID: e78c7bca56dab5ce4f22694f99115ec07e4935f6 Gitweb: http://git.kernel.org/tip/e78c7bca56dab5ce4f22694f99115ec07e4935f6 Author: Michael Kerrisk <mtk.manpages@gmail.com> AuthorDate: Fri, 9 May 2014 16:54:28 +0200 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Thu, 22 May 2014 11:16:26 +0200 sched: Simplify return logic in sched_copy_attr() The logic in this function is a little contorted, clean it up: * Rather than having chained gotos for the -EFBIG case, just return -EFBIG directly. * Now, the label 'out' is no longer needed, and 'ret' must be zero zero by the time we fall through to this point, so just return 0. Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/536CEC24.9080201@gmail.com Signed-off-by: Ingo Molnar <mingo@kernel.org> --- kernel/sched/core.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 2551b6d..2318fc4 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3657,13 +3657,11 @@ static int sched_copy_attr(struct sched_attr __user *uattr, */ attr->sched_nice = clamp(attr->sched_nice, MIN_NICE, MAX_NICE); -out: - return ret; + return 0; err_size: put_user(sizeof(*attr), &uattr->size); - ret = -E2BIG; - goto out; + return -E2BIG; } /** ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 3/3] sched: Simplify return logic in sched_read_attr() 2014-05-09 14:49 [PATCH 0/3] sched: sched_setattr/sched_getattr fixes and improvements Michael Kerrisk (man-pages) 2014-05-09 14:54 ` [PATCH 1/3] sched: Make sched_setattr() correctly return -EFBIG Michael Kerrisk (man-pages) 2014-05-09 14:54 ` [PATCH 2/3] sched: Simplify return logic in sched_copy_attr() Michael Kerrisk (man-pages) @ 2014-05-09 14:54 ` Michael Kerrisk (man-pages) 2014-05-19 13:08 ` [tip:sched/core] sched: Simplify return logic in sched_read_attr( ) tip-bot for Michael Kerrisk 2014-05-22 12:27 ` tip-bot for Michael Kerrisk 2014-05-09 17:16 ` [PATCH 0/3] sched: sched_setattr/sched_getattr fixes and improvements Peter Zijlstra 3 siblings, 2 replies; 14+ messages in thread From: Michael Kerrisk (man-pages) @ 2014-05-09 14:54 UTC (permalink / raw) To: Peter Zijlstra Cc: mtk.manpages, lkml, Juri Lelli, Dario Faggioli, Ingo Molnar From: Michael Kerrisk <mtk.manpages@gmail.com> Gotos are chained pointlessly here, and the 'out' label can be dispensed with. Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com> --- kernel/sched/core.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 8fa3e12..d21c070 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3759,7 +3759,7 @@ static int sched_read_attr(struct sched_attr __user *uattr, for (; addr < end; addr++) { if (*addr) - goto err_size; + return -EFBIG; } attr->size = usize; @@ -3769,12 +3769,7 @@ static int sched_read_attr(struct sched_attr __user *uattr, if (ret) return -EFAULT; -out: - return ret; - -err_size: - ret = -E2BIG; - goto out; + return 0; } /** -- 1.9.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [tip:sched/core] sched: Simplify return logic in sched_read_attr( ) 2014-05-09 14:54 ` [PATCH 3/3] sched: Simplify return logic in sched_read_attr() Michael Kerrisk (man-pages) @ 2014-05-19 13:08 ` tip-bot for Michael Kerrisk 2014-05-22 12:27 ` tip-bot for Michael Kerrisk 1 sibling, 0 replies; 14+ messages in thread From: tip-bot for Michael Kerrisk @ 2014-05-19 13:08 UTC (permalink / raw) To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, peterz, tglx, mtk.manpages Commit-ID: 55854e657f9890a1f76105c698d1d52cf6c43661 Gitweb: http://git.kernel.org/tip/55854e657f9890a1f76105c698d1d52cf6c43661 Author: Michael Kerrisk <mtk.manpages@gmail.com> AuthorDate: Fri, 9 May 2014 16:54:33 +0200 Committer: Thomas Gleixner <tglx@linutronix.de> CommitDate: Mon, 19 May 2014 22:02:40 +0900 sched: Simplify return logic in sched_read_attr() Gotos are chained pointlessly here, and the 'out' label can be dispensed with. Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/536CEC29.9090503@gmail.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- kernel/sched/core.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 08b6355..29c542e 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3821,7 +3821,7 @@ static int sched_read_attr(struct sched_attr __user *uattr, for (; addr < end; addr++) { if (*addr) - goto err_size; + return -EFBIG; } attr->size = usize; @@ -3831,12 +3831,7 @@ static int sched_read_attr(struct sched_attr __user *uattr, if (ret) return -EFAULT; -out: - return ret; - -err_size: - ret = -E2BIG; - goto out; + return 0; } /** ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [tip:sched/core] sched: Simplify return logic in sched_read_attr( ) 2014-05-09 14:54 ` [PATCH 3/3] sched: Simplify return logic in sched_read_attr() Michael Kerrisk (man-pages) 2014-05-19 13:08 ` [tip:sched/core] sched: Simplify return logic in sched_read_attr( ) tip-bot for Michael Kerrisk @ 2014-05-22 12:27 ` tip-bot for Michael Kerrisk 1 sibling, 0 replies; 14+ messages in thread From: tip-bot for Michael Kerrisk @ 2014-05-22 12:27 UTC (permalink / raw) To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, peterz, tglx, mtk.manpages Commit-ID: 22400674945c562cf3c176d6c4178cd545e2dec9 Gitweb: http://git.kernel.org/tip/22400674945c562cf3c176d6c4178cd545e2dec9 Author: Michael Kerrisk <mtk.manpages@gmail.com> AuthorDate: Fri, 9 May 2014 16:54:33 +0200 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Thu, 22 May 2014 11:16:27 +0200 sched: Simplify return logic in sched_read_attr() Gotos are chained pointlessly here, and the 'out' label can be dispensed with. Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/536CEC29.9090503@gmail.com Signed-off-by: Ingo Molnar <mingo@kernel.org> --- kernel/sched/core.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 2318fc4..a78c5b6 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3821,7 +3821,7 @@ static int sched_read_attr(struct sched_attr __user *uattr, for (; addr < end; addr++) { if (*addr) - goto err_size; + return -EFBIG; } attr->size = usize; @@ -3831,12 +3831,7 @@ static int sched_read_attr(struct sched_attr __user *uattr, if (ret) return -EFAULT; -out: - return ret; - -err_size: - ret = -E2BIG; - goto out; + return 0; } /** ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 0/3] sched: sched_setattr/sched_getattr fixes and improvements 2014-05-09 14:49 [PATCH 0/3] sched: sched_setattr/sched_getattr fixes and improvements Michael Kerrisk (man-pages) ` (2 preceding siblings ...) 2014-05-09 14:54 ` [PATCH 3/3] sched: Simplify return logic in sched_read_attr() Michael Kerrisk (man-pages) @ 2014-05-09 17:16 ` Peter Zijlstra 2014-05-13 18:09 ` Michael Kerrisk (man-pages) 3 siblings, 1 reply; 14+ messages in thread From: Peter Zijlstra @ 2014-05-09 17:16 UTC (permalink / raw) To: Michael Kerrisk (man-pages); +Cc: lkml, Juri Lelli, Dario Faggioli, Ingo Molnar [-- Attachment #1: Type: text/plain, Size: 332 bytes --] On Fri, May 09, 2014 at 04:49:18PM +0200, Michael Kerrisk (man-pages) wrote: > Peter, > > While looking at your sched_setattr()/sched_getatr() documentation, > I noticed a bug in the handling of -EFBIG, and a couple of places > in the code where the error handling logic could be streamlined. > Patches follow. Thanks! [-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/3] sched: sched_setattr/sched_getattr fixes and improvements 2014-05-09 17:16 ` [PATCH 0/3] sched: sched_setattr/sched_getattr fixes and improvements Peter Zijlstra @ 2014-05-13 18:09 ` Michael Kerrisk (man-pages) 2014-05-13 19:30 ` Peter Zijlstra 0 siblings, 1 reply; 14+ messages in thread From: Michael Kerrisk (man-pages) @ 2014-05-13 18:09 UTC (permalink / raw) To: Peter Zijlstra Cc: mtk.manpages, lkml, Juri Lelli, Dario Faggioli, Ingo Molnar On 05/09/2014 07:16 PM, Peter Zijlstra wrote: > On Fri, May 09, 2014 at 04:49:18PM +0200, Michael Kerrisk (man-pages) wrote: >> Peter, >> >> While looking at your sched_setattr()/sched_getatr() documentation, >> I noticed a bug in the handling of -EFBIG, and a couple of places >> in the code where the error handling logic could be streamlined. >> Patches follow. > > Thanks! Hi Peter, I was a little unclear on what "Thanks" meant... Does it mean you plan to apply all 3 patches in your tree to go upstream? Thanks, Michael -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/3] sched: sched_setattr/sched_getattr fixes and improvements 2014-05-13 18:09 ` Michael Kerrisk (man-pages) @ 2014-05-13 19:30 ` Peter Zijlstra 0 siblings, 0 replies; 14+ messages in thread From: Peter Zijlstra @ 2014-05-13 19:30 UTC (permalink / raw) To: Michael Kerrisk (man-pages); +Cc: lkml, Juri Lelli, Dario Faggioli, Ingo Molnar On Tue, May 13, 2014 at 08:09:34PM +0200, Michael Kerrisk (man-pages) wrote: > On 05/09/2014 07:16 PM, Peter Zijlstra wrote: > > On Fri, May 09, 2014 at 04:49:18PM +0200, Michael Kerrisk (man-pages) wrote: > >> Peter, > >> > >> While looking at your sched_setattr()/sched_getatr() documentation, > >> I noticed a bug in the handling of -EFBIG, and a couple of places > >> in the code where the error handling logic could be streamlined. > >> Patches follow. > > > > Thanks! > > Hi Peter, > > I was a little unclear on what "Thanks" meant... Does it mean > you plan to apply all 3 patches in your tree to go upstream? Yeah, I queued them. They should appear in tip sometime this week or so. ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2014-05-22 12:27 UTC | newest] Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2014-05-09 14:49 [PATCH 0/3] sched: sched_setattr/sched_getattr fixes and improvements Michael Kerrisk (man-pages) 2014-05-09 14:54 ` [PATCH 1/3] sched: Make sched_setattr() correctly return -EFBIG Michael Kerrisk (man-pages) 2014-05-14 3:23 ` Michael Kerrisk (man-pages) 2014-05-19 13:06 ` [tip:sched/core] " tip-bot for Michael Kerrisk 2014-05-22 12:24 ` tip-bot for Michael Kerrisk 2014-05-09 14:54 ` [PATCH 2/3] sched: Simplify return logic in sched_copy_attr() Michael Kerrisk (man-pages) 2014-05-19 13:08 ` [tip:sched/core] sched: Simplify return logic in sched_copy_attr( ) tip-bot for Michael Kerrisk 2014-05-22 12:26 ` tip-bot for Michael Kerrisk 2014-05-09 14:54 ` [PATCH 3/3] sched: Simplify return logic in sched_read_attr() Michael Kerrisk (man-pages) 2014-05-19 13:08 ` [tip:sched/core] sched: Simplify return logic in sched_read_attr( ) tip-bot for Michael Kerrisk 2014-05-22 12:27 ` tip-bot for Michael Kerrisk 2014-05-09 17:16 ` [PATCH 0/3] sched: sched_setattr/sched_getattr fixes and improvements Peter Zijlstra 2014-05-13 18:09 ` Michael Kerrisk (man-pages) 2014-05-13 19:30 ` Peter Zijlstra
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).