[PATCH v2] linux-user: fix O_NONBLOCK usage for hppa target

Helge Deller posted 1 patch 3 years, 2 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210201220551.GA8015@ls3530.fritz.box
Maintainers: Laurent Vivier <laurent@vivier.eu>
[PATCH v2] linux-user: fix O_NONBLOCK usage for hppa target
Posted by Helge Deller 3 years, 2 months ago
Historically the parisc linux port tried to be compatible with HP-UX
userspace and as such defined the O_NONBLOCK constant to 0200004 to
emulate separate NDELAY & NONBLOCK values.

Since parisc was the only Linux platform which had two bits set, this
produced various userspace issues. Finally it was decided to drop the
(never completed) HP-UX compatibilty, which is why O_NONBLOCK was
changed upstream to only have one bit set in future with this commit:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=75ae04206a4d0e4f541c1d692b7febd1c0fdb814

This patch simply adjusts the value for qemu-user too.

Signed-off-by: Helge Deller <deller@gmx.de>

---

diff --git a/linux-user/hppa/target_fcntl.h b/linux-user/hppa/target_fcntl.h
index bd966a59b8..08e3a4fcb0 100644
--- a/linux-user/hppa/target_fcntl.h
+++ b/linux-user/hppa/target_fcntl.h
@@ -8,7 +8,7 @@
 #ifndef HPPA_TARGET_FCNTL_H
 #define HPPA_TARGET_FCNTL_H

-#define TARGET_O_NONBLOCK    000200004 /* HPUX has separate NDELAY & NONBLOCK */
+#define TARGET_O_NONBLOCK    000200000
 #define TARGET_O_APPEND      000000010
 #define TARGET_O_CREAT       000000400 /* not fcntl */
 #define TARGET_O_EXCL        000002000 /* not fcntl */

Re: [PATCH v2] linux-user: fix O_NONBLOCK usage for hppa target
Posted by Laurent Vivier 3 years, 2 months ago
Le 01/02/2021 à 23:05, Helge Deller a écrit :
> Historically the parisc linux port tried to be compatible with HP-UX
> userspace and as such defined the O_NONBLOCK constant to 0200004 to
> emulate separate NDELAY & NONBLOCK values.
> 
> Since parisc was the only Linux platform which had two bits set, this
> produced various userspace issues. Finally it was decided to drop the
> (never completed) HP-UX compatibilty, which is why O_NONBLOCK was
> changed upstream to only have one bit set in future with this commit:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=75ae04206a4d0e4f541c1d692b7febd1c0fdb814
> 
> This patch simply adjusts the value for qemu-user too.
> 
> Signed-off-by: Helge Deller <deller@gmx.de>
> 
> ---
> 
> diff --git a/linux-user/hppa/target_fcntl.h b/linux-user/hppa/target_fcntl.h
> index bd966a59b8..08e3a4fcb0 100644
> --- a/linux-user/hppa/target_fcntl.h
> +++ b/linux-user/hppa/target_fcntl.h
> @@ -8,7 +8,7 @@
>  #ifndef HPPA_TARGET_FCNTL_H
>  #define HPPA_TARGET_FCNTL_H
> 
> -#define TARGET_O_NONBLOCK    000200004 /* HPUX has separate NDELAY & NONBLOCK */
> +#define TARGET_O_NONBLOCK    000200000
>  #define TARGET_O_APPEND      000000010
>  #define TARGET_O_CREAT       000000400 /* not fcntl */
>  #define TARGET_O_EXCL        000002000 /* not fcntl */
> 

Reviewed-by: Laurent Vivier <laurent@vivier.eu>

Re: [PATCH v2] linux-user: fix O_NONBLOCK usage for hppa target
Posted by Laurent Vivier 3 years, 2 months ago
Le 01/02/2021 à 23:05, Helge Deller a écrit :
> Historically the parisc linux port tried to be compatible with HP-UX
> userspace and as such defined the O_NONBLOCK constant to 0200004 to
> emulate separate NDELAY & NONBLOCK values.
> 
> Since parisc was the only Linux platform which had two bits set, this
> produced various userspace issues. Finally it was decided to drop the
> (never completed) HP-UX compatibilty, which is why O_NONBLOCK was
> changed upstream to only have one bit set in future with this commit:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=75ae04206a4d0e4f541c1d692b7febd1c0fdb814
> 
> This patch simply adjusts the value for qemu-user too.
> 
> Signed-off-by: Helge Deller <deller@gmx.de>
> 
> ---
> 
> diff --git a/linux-user/hppa/target_fcntl.h b/linux-user/hppa/target_fcntl.h
> index bd966a59b8..08e3a4fcb0 100644
> --- a/linux-user/hppa/target_fcntl.h
> +++ b/linux-user/hppa/target_fcntl.h
> @@ -8,7 +8,7 @@
>  #ifndef HPPA_TARGET_FCNTL_H
>  #define HPPA_TARGET_FCNTL_H
> 
> -#define TARGET_O_NONBLOCK    000200004 /* HPUX has separate NDELAY & NONBLOCK */
> +#define TARGET_O_NONBLOCK    000200000
>  #define TARGET_O_APPEND      000000010
>  #define TARGET_O_CREAT       000000400 /* not fcntl */
>  #define TARGET_O_EXCL        000002000 /* not fcntl */
> 

Applied to my linux-user-for-6.0 branch.

Thanks,
Laurent

Re: [PATCH v2] linux-user: fix O_NONBLOCK usage for hppa target
Posted by Helge Deller 3 years, 2 months ago
Dear qemu-stable,

can you please consider adding this patch to the qemu-stable branch.
Upstream commit	2bdc74f3d7c4cacb65dbde910471c62992640275

Thanks,
Helge


On 2/13/21 5:25 PM, Laurent Vivier wrote:
> Le 01/02/2021 à 23:05, Helge Deller a écrit :
>> Historically the parisc linux port tried to be compatible with HP-UX
>> userspace and as such defined the O_NONBLOCK constant to 0200004 to
>> emulate separate NDELAY & NONBLOCK values.
>>
>> Since parisc was the only Linux platform which had two bits set, this
>> produced various userspace issues. Finally it was decided to drop the
>> (never completed) HP-UX compatibilty, which is why O_NONBLOCK was
>> changed upstream to only have one bit set in future with this commit:
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=75ae04206a4d0e4f541c1d692b7febd1c0fdb814
>>
>> This patch simply adjusts the value for qemu-user too.
>>
>> Signed-off-by: Helge Deller <deller@gmx.de>
>>
>> ---
>>
>> diff --git a/linux-user/hppa/target_fcntl.h b/linux-user/hppa/target_fcntl.h
>> index bd966a59b8..08e3a4fcb0 100644
>> --- a/linux-user/hppa/target_fcntl.h
>> +++ b/linux-user/hppa/target_fcntl.h
>> @@ -8,7 +8,7 @@
>>   #ifndef HPPA_TARGET_FCNTL_H
>>   #define HPPA_TARGET_FCNTL_H
>>
>> -#define TARGET_O_NONBLOCK    000200004 /* HPUX has separate NDELAY & NONBLOCK */
>> +#define TARGET_O_NONBLOCK    000200000
>>   #define TARGET_O_APPEND      000000010
>>   #define TARGET_O_CREAT       000000400 /* not fcntl */
>>   #define TARGET_O_EXCL        000002000 /* not fcntl */
>>
>
> Applied to my linux-user-for-6.0 branch.
>
> Thanks,
> Laurent
>