* [musl] [PATCH] nice: return EPERM instead of EACCES
@ 2021-06-29 13:31 Alexey Kodanev
2021-06-29 14:48 ` Rich Felker
0 siblings, 1 reply; 6+ messages in thread
From: Alexey Kodanev @ 2021-06-29 13:31 UTC (permalink / raw)
To: musl; +Cc: Alexey Kodanev
To comply with POSIX, change errno from EACCES to EPERM
when the caller did not have the required privilege.
---
src/unistd/nice.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/unistd/nice.c b/src/unistd/nice.c
index 6c25c8c3..1c2295ff 100644
--- a/src/unistd/nice.c
+++ b/src/unistd/nice.c
@@ -1,4 +1,5 @@
#include <unistd.h>
+#include <errno.h>
#include <sys/resource.h>
#include <limits.h>
#include "syscall.h"
@@ -12,5 +13,11 @@ int nice(int inc)
prio += getpriority(PRIO_PROCESS, 0);
if (prio > NZERO-1) prio = NZERO-1;
if (prio < -NZERO) prio = -NZERO;
- return setpriority(PRIO_PROCESS, 0, prio) ? -1 : prio;
+ if (setpriority(PRIO_PROCESS, 0, prio)) {
+ if (errno == EACCES)
+ errno = EPERM;
+ return -1;
+ } else {
+ return prio;
+ }
}
--
2.25.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [musl] [PATCH] nice: return EPERM instead of EACCES
2021-06-29 13:31 [musl] [PATCH] nice: return EPERM instead of EACCES Alexey Kodanev
@ 2021-06-29 14:48 ` Rich Felker
2021-06-29 15:45 ` Alexey Kodanev
0 siblings, 1 reply; 6+ messages in thread
From: Rich Felker @ 2021-06-29 14:48 UTC (permalink / raw)
To: Alexey Kodanev; +Cc: musl
On Tue, Jun 29, 2021 at 04:31:30PM +0300, Alexey Kodanev wrote:
> To comply with POSIX, change errno from EACCES to EPERM
> when the caller did not have the required privilege.
> ---
> src/unistd/nice.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/src/unistd/nice.c b/src/unistd/nice.c
> index 6c25c8c3..1c2295ff 100644
> --- a/src/unistd/nice.c
> +++ b/src/unistd/nice.c
> @@ -1,4 +1,5 @@
> #include <unistd.h>
> +#include <errno.h>
> #include <sys/resource.h>
> #include <limits.h>
> #include "syscall.h"
> @@ -12,5 +13,11 @@ int nice(int inc)
> prio += getpriority(PRIO_PROCESS, 0);
> if (prio > NZERO-1) prio = NZERO-1;
> if (prio < -NZERO) prio = -NZERO;
> - return setpriority(PRIO_PROCESS, 0, prio) ? -1 : prio;
> + if (setpriority(PRIO_PROCESS, 0, prio)) {
> + if (errno == EACCES)
> + errno = EPERM;
> + return -1;
> + } else {
> + return prio;
> + }
> }
> --
> 2.25.1
Is there actually an issue here? setpriority is specified to fail with
EACCES already for this case; EPERM is only specified for targeting
other processes you don't have permission to target. Is Linux getting
this wrong for setpriority?
Rich
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [musl] [PATCH] nice: return EPERM instead of EACCES
2021-06-29 14:48 ` Rich Felker
@ 2021-06-29 15:45 ` Alexey Kodanev
2021-06-29 20:10 ` Rich Felker
0 siblings, 1 reply; 6+ messages in thread
From: Alexey Kodanev @ 2021-06-29 15:45 UTC (permalink / raw)
To: Rich Felker; +Cc: musl
On 29.06.2021 17:48, Rich Felker wrote:
> Is there actually an issue here? setpriority is specified to fail with
> EACCES already for this case; EPERM is only specified for targeting
> other processes you don't have permission to target. Is Linux getting
> this wrong for setpriority?
No, it's fine for setpriority(), it just seems wrong for nice()
to return EACCES in this case.
LTP/nice04 test (setting nice(-10)) is failing with musl and POSIX
indeed says that the errno should be EPERM, for nice().
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [musl] [PATCH] nice: return EPERM instead of EACCES
2021-06-29 15:45 ` Alexey Kodanev
@ 2021-06-29 20:10 ` Rich Felker
2021-08-03 9:18 ` Alexey Kodanev
0 siblings, 1 reply; 6+ messages in thread
From: Rich Felker @ 2021-06-29 20:10 UTC (permalink / raw)
To: Alexey Kodanev; +Cc: musl
On Tue, Jun 29, 2021 at 06:45:42PM +0300, Alexey Kodanev wrote:
> On 29.06.2021 17:48, Rich Felker wrote:
> > Is there actually an issue here? setpriority is specified to fail with
> > EACCES already for this case; EPERM is only specified for targeting
> > other processes you don't have permission to target. Is Linux getting
> > this wrong for setpriority?
>
> No, it's fine for setpriority(), it just seems wrong for nice()
> to return EACCES in this case.
>
> LTP/nice04 test (setting nice(-10)) is failing with musl and POSIX
> indeed says that the errno should be EPERM, for nice().
Oh, sorry, I read it backwards and was thinking it was replacing EPERM
with EACCES. Indeed nice is supposed to return EPERM where setpriority
would return EACCES so I think this patch is correct.
Rich
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [musl] [PATCH] nice: return EPERM instead of EACCES
2021-06-29 20:10 ` Rich Felker
@ 2021-08-03 9:18 ` Alexey Kodanev
2022-03-08 22:16 ` Rich Felker
0 siblings, 1 reply; 6+ messages in thread
From: Alexey Kodanev @ 2021-08-03 9:18 UTC (permalink / raw)
To: Rich Felker; +Cc: musl
On 29.06.2021 23:10, Rich Felker wrote:
> On Tue, Jun 29, 2021 at 06:45:42PM +0300, Alexey Kodanev wrote:
>> On 29.06.2021 17:48, Rich Felker wrote:
>>> Is there actually an issue here? setpriority is specified to fail with
>>> EACCES already for this case; EPERM is only specified for targeting
>>> other processes you don't have permission to target. Is Linux getting
>>> this wrong for setpriority?
>>
>> No, it's fine for setpriority(), it just seems wrong for nice()
>> to return EACCES in this case.
>>
>> LTP/nice04 test (setting nice(-10)) is failing with musl and POSIX
>> indeed says that the errno should be EPERM, for nice().
>
> Oh, sorry, I read it backwards and was thinking it was replacing EPERM
> with EACCES. Indeed nice is supposed to return EPERM where setpriority
> would return EACCES so I think this patch is correct.
>
Hi Rich,
I wonder what is the status of this patch, didn't find it in git... is
there any issue with it?
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [musl] [PATCH] nice: return EPERM instead of EACCES
2021-08-03 9:18 ` Alexey Kodanev
@ 2022-03-08 22:16 ` Rich Felker
0 siblings, 0 replies; 6+ messages in thread
From: Rich Felker @ 2022-03-08 22:16 UTC (permalink / raw)
To: Alexey Kodanev; +Cc: musl
On Tue, Aug 03, 2021 at 12:18:15PM +0300, Alexey Kodanev wrote:
> On 29.06.2021 23:10, Rich Felker wrote:
> > On Tue, Jun 29, 2021 at 06:45:42PM +0300, Alexey Kodanev wrote:
> >> On 29.06.2021 17:48, Rich Felker wrote:
> >>> Is there actually an issue here? setpriority is specified to fail with
> >>> EACCES already for this case; EPERM is only specified for targeting
> >>> other processes you don't have permission to target. Is Linux getting
> >>> this wrong for setpriority?
> >>
> >> No, it's fine for setpriority(), it just seems wrong for nice()
> >> to return EACCES in this case.
> >>
> >> LTP/nice04 test (setting nice(-10)) is failing with musl and POSIX
> >> indeed says that the errno should be EPERM, for nice().
> >
> > Oh, sorry, I read it backwards and was thinking it was replacing EPERM
> > with EACCES. Indeed nice is supposed to return EPERM where setpriority
> > would return EACCES so I think this patch is correct.
> >
>
> Hi Rich,
>
> I wonder what is the status of this patch, didn't find it in git... is
> there any issue with it?
Sorry I overlooked this for so long! I'm merging it now.
Rich
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-03-08 22:16 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-29 13:31 [musl] [PATCH] nice: return EPERM instead of EACCES Alexey Kodanev
2021-06-29 14:48 ` Rich Felker
2021-06-29 15:45 ` Alexey Kodanev
2021-06-29 20:10 ` Rich Felker
2021-08-03 9:18 ` Alexey Kodanev
2022-03-08 22:16 ` Rich Felker
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
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).