Re: [PATCH v4 1/4] powerpc: make llseek 32bit-only.

2019-08-29 Thread Michal Suchánek
On Thu, 29 Aug 2019 16:32:50 +0200
Arnd Bergmann  wrote:

> On Thu, Aug 29, 2019 at 4:19 PM Michal Suchánek  wrote:
> > On Thu, 29 Aug 2019 14:57:39 +0200 Arnd Bergmann  wrote:  
> > > On Thu, Aug 29, 2019 at 2:37 PM Michal Suchánek  
> > > wrote:  
> > > > On Thu, 29 Aug 2019 14:19:46 +0200 Arnd Bergmann  wrote: 
> > > >  
> > > > > On Thu, Aug 29, 2019 at 12:23 PM Michal Suchanek  
> > > > > wrote:
> > > > > In particular, I don't see why you single out llseek here, but leave 
> > > > > other
> > > > > syscalls that are not needed on 64-bit machines such as pread64().  
> > > >
> > > > Because llseek is not built in fs/ when building 64bit only causing a
> > > > link error.
> > > >
> > > > I initially posted patch to build it always but it was pointed out it
> > > > is not needed, and  the interface does not make sense on 64bit, and
> > > > that platforms that don't have it on 64bit now don't want that useless
> > > > code.  
> > >
> > > Ok, please put that into the changeset description then.
> > >
> > > I looked at uses of __NR__llseek in debian code search and
> > > found this one:
> > >
> > > https://codesearch.debian.net/show?file=umview_0.8.2-1.2%2Fxmview%2Fum_mmap.c=328
> > >
> > > It looks like this application will try to use llseek instead of lseek
> > > when built against kernel headers that define __NR_llseek.
> > >  
> >
> > The available documentation says this syscall is for 32bit only so
> > using it on 64bit is undefined. The interface is not well-defined in
> > that case either.  
> 
> That's generally not how it works. If there is an existing application
> that relies on the behavior of the system call interface, we should not
> change it in a way that breaks the application, regardless of what the
> documentation says. Presumably nobody cares about umview on
> powerpc64, but there might be other applications doing the same
> thing.

Actually the umview headers go out of their way to define the llseek
syscall as invalid on x86_64 so that the non-llseek path is taken. 
mview-os/xmview/defs_x86_64_um.h:#define __NR__llseek __NR_doesnotexist
It is probably an oversight that this is not done on non-x86. I am not
even sure this builds on non-x86 out of the box.

> It looks like sparc64 and parisc64 do the same thing as powerpc64,
> and provide llseek() calls that may or may not be used by
> applications.

And if they are supposed to build with !compat it should be removed
there as well.

> 
> I think your original approach of always building sys_llseek on
> powerpc64 is the safe choice here.

That's safe but adds junk to the kernel as pointed out in the reply to
that patch.

Thanks

Michal


Re: [PATCH v4 1/4] powerpc: make llseek 32bit-only.

2019-08-29 Thread Arnd Bergmann
On Thu, Aug 29, 2019 at 4:19 PM Michal Suchánek  wrote:
> On Thu, 29 Aug 2019 14:57:39 +0200 Arnd Bergmann  wrote:
> > On Thu, Aug 29, 2019 at 2:37 PM Michal Suchánek  wrote:
> > > On Thu, 29 Aug 2019 14:19:46 +0200 Arnd Bergmann  wrote:
> > > > On Thu, Aug 29, 2019 at 12:23 PM Michal Suchanek  
> > > > wrote:
> > > > In particular, I don't see why you single out llseek here, but leave 
> > > > other
> > > > syscalls that are not needed on 64-bit machines such as pread64().
> > >
> > > Because llseek is not built in fs/ when building 64bit only causing a
> > > link error.
> > >
> > > I initially posted patch to build it always but it was pointed out it
> > > is not needed, and  the interface does not make sense on 64bit, and
> > > that platforms that don't have it on 64bit now don't want that useless
> > > code.
> >
> > Ok, please put that into the changeset description then.
> >
> > I looked at uses of __NR__llseek in debian code search and
> > found this one:
> >
> > https://codesearch.debian.net/show?file=umview_0.8.2-1.2%2Fxmview%2Fum_mmap.c=328
> >
> > It looks like this application will try to use llseek instead of lseek
> > when built against kernel headers that define __NR_llseek.
> >
>
> The available documentation says this syscall is for 32bit only so
> using it on 64bit is undefined. The interface is not well-defined in
> that case either.

That's generally not how it works. If there is an existing application
that relies on the behavior of the system call interface, we should not
change it in a way that breaks the application, regardless of what the
documentation says. Presumably nobody cares about umview on
powerpc64, but there might be other applications doing the same
thing.

It looks like sparc64 and parisc64 do the same thing as powerpc64,
and provide llseek() calls that may or may not be used by
applications.

I think your original approach of always building sys_llseek on
powerpc64 is the safe choice here.

 Arnd


Re: [PATCH v4 1/4] powerpc: make llseek 32bit-only.

2019-08-29 Thread Michal Suchánek
On Thu, 29 Aug 2019 14:57:39 +0200
Arnd Bergmann  wrote:

> On Thu, Aug 29, 2019 at 2:37 PM Michal Suchánek  wrote:
> > On Thu, 29 Aug 2019 14:19:46 +0200 Arnd Bergmann  wrote:  
> > > On Thu, Aug 29, 2019 at 12:23 PM Michal Suchanek  
> > > wrote:
> > > In particular, I don't see why you single out llseek here, but leave other
> > > syscalls that are not needed on 64-bit machines such as pread64().  
> >
> > Because llseek is not built in fs/ when building 64bit only causing a
> > link error.
> >
> > I initially posted patch to build it always but it was pointed out it
> > is not needed, and  the interface does not make sense on 64bit, and
> > that platforms that don't have it on 64bit now don't want that useless
> > code.  
> 
> Ok, please put that into the changeset description then.
> 
> I looked at uses of __NR__llseek in debian code search and
> found this one:
> 
> https://codesearch.debian.net/show?file=umview_0.8.2-1.2%2Fxmview%2Fum_mmap.c=328
> 
> It looks like this application will try to use llseek instead of lseek
> when built against kernel headers that define __NR_llseek.
> 

The available documentation says this syscall is for 32bit only so
using it on 64bit is undefined. The interface is not well-defined in
that case either.

Thanks

Michal


Re: [PATCH v4 1/4] powerpc: make llseek 32bit-only.

2019-08-29 Thread Arnd Bergmann
On Thu, Aug 29, 2019 at 2:37 PM Michal Suchánek  wrote:
> On Thu, 29 Aug 2019 14:19:46 +0200 Arnd Bergmann  wrote:
> > On Thu, Aug 29, 2019 at 12:23 PM Michal Suchanek  wrote:
> > In particular, I don't see why you single out llseek here, but leave other
> > syscalls that are not needed on 64-bit machines such as pread64().
>
> Because llseek is not built in fs/ when building 64bit only causing a
> link error.
>
> I initially posted patch to build it always but it was pointed out it
> is not needed, and  the interface does not make sense on 64bit, and
> that platforms that don't have it on 64bit now don't want that useless
> code.

Ok, please put that into the changeset description then.

I looked at uses of __NR__llseek in debian code search and
found this one:

https://codesearch.debian.net/show?file=umview_0.8.2-1.2%2Fxmview%2Fum_mmap.c=328

It looks like this application will try to use llseek instead of lseek
when built against kernel headers that define __NR_llseek.

Changing the powerpc kernel not to provide that to user
space may break it unless the program gets recompiled against
the latest headers.

  Arnd


Re: [PATCH v4 1/4] powerpc: make llseek 32bit-only.

2019-08-29 Thread Michal Suchánek
On Thu, 29 Aug 2019 14:19:46 +0200
Arnd Bergmann  wrote:

> On Thu, Aug 29, 2019 at 12:23 PM Michal Suchanek  wrote:
> >
> > Fixes: aff850393200 ("powerpc: add system call table generation support")  
> 
> This patch needs a proper explanation. The Fixes tag doesn't seem right
> here, since ppc64 has had llseek since the start in 2002 commit 3939e37587e7
> ("Add ppc64 support. This includes both pSeries (RS/6000) and iSeries
> (AS/400).").
> 
> > diff --git a/arch/powerpc/kernel/syscalls/syscall.tbl 
> > b/arch/powerpc/kernel/syscalls/syscall.tbl
> > index 010b9f445586..53e427606f6c 100644
> > --- a/arch/powerpc/kernel/syscalls/syscall.tbl
> > +++ b/arch/powerpc/kernel/syscalls/syscall.tbl
> > @@ -188,7 +188,7 @@
> >  137common  afs_syscall sys_ni_syscall
> >  138common  setfsuidsys_setfsuid
> >  139common  setfsgidsys_setfsgid
> > -140common  _llseek sys_llseek
> > +14032  _llseek sys_llseek
> >  141common  getdentssys_getdents
> > compat_sys_getdents
> >  142common  _newselect  sys_select  
> > compat_sys_select
> >  143common  flock   sys_flock  
> 
> In particular, I don't see why you single out llseek here, but leave other
> syscalls that are not needed on 64-bit machines such as pread64().

Because llseek is not built in fs/ when building 64bit only causing a
link error. 

I initially posted patch to build it always but it was pointed out it
is not needed, and  the interface does not make sense on 64bit, and
that platforms that don't have it on 64bit now don't want that useless
code.

Thanks

Michal


Re: [PATCH v4 1/4] powerpc: make llseek 32bit-only.

2019-08-29 Thread Arnd Bergmann
On Thu, Aug 29, 2019 at 12:23 PM Michal Suchanek  wrote:
>
> Fixes: aff850393200 ("powerpc: add system call table generation support")

This patch needs a proper explanation. The Fixes tag doesn't seem right
here, since ppc64 has had llseek since the start in 2002 commit 3939e37587e7
("Add ppc64 support. This includes both pSeries (RS/6000) and iSeries
(AS/400).").

> diff --git a/arch/powerpc/kernel/syscalls/syscall.tbl 
> b/arch/powerpc/kernel/syscalls/syscall.tbl
> index 010b9f445586..53e427606f6c 100644
> --- a/arch/powerpc/kernel/syscalls/syscall.tbl
> +++ b/arch/powerpc/kernel/syscalls/syscall.tbl
> @@ -188,7 +188,7 @@
>  137common  afs_syscall sys_ni_syscall
>  138common  setfsuidsys_setfsuid
>  139common  setfsgidsys_setfsgid
> -140common  _llseek sys_llseek
> +14032  _llseek sys_llseek
>  141common  getdentssys_getdents  
>   compat_sys_getdents
>  142common  _newselect  sys_select
>   compat_sys_select
>  143common  flock   sys_flock

In particular, I don't see why you single out llseek here, but leave other
syscalls that are not needed on 64-bit machines such as pread64().

ARnd


[PATCH v4 1/4] powerpc: make llseek 32bit-only.

2019-08-29 Thread Michal Suchanek
Fixes: aff850393200 ("powerpc: add system call table generation support")

Signed-off-by: Michal Suchanek 
---
 arch/powerpc/kernel/syscalls/syscall.tbl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/syscalls/syscall.tbl 
b/arch/powerpc/kernel/syscalls/syscall.tbl
index 010b9f445586..53e427606f6c 100644
--- a/arch/powerpc/kernel/syscalls/syscall.tbl
+++ b/arch/powerpc/kernel/syscalls/syscall.tbl
@@ -188,7 +188,7 @@
 137common  afs_syscall sys_ni_syscall
 138common  setfsuidsys_setfsuid
 139common  setfsgidsys_setfsgid
-140common  _llseek sys_llseek
+14032  _llseek sys_llseek
 141common  getdentssys_getdents
compat_sys_getdents
 142common  _newselect  sys_select  
compat_sys_select
 143common  flock   sys_flock
-- 
2.22.0