Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1324231
| From | Heiko Carstens <heiko.carstens@de.ibm.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 1/5] all: s390: move wrapper infrastructure to generic headers |
| Date | 2016-02-02 17:10 +0100 |
| Message-ID | <qXLGH-5wZ-37@gated-at.bofh.it> (permalink) |
| References | (2 earlier) <qVTIl-3eg-3@gated-at.bofh.it> <qVXLY-65U-17@gated-at.bofh.it> <qXl9v-207-7@gated-at.bofh.it> <qXDJ7-7w3-5@gated-at.bofh.it> <qXLnl-55B-29@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Tue, Feb 02, 2016 at 06:43:31PM +0300, Yury Norov wrote:
> > Well, I'd like to have some proof by the compiler or linker that nothing
> > went wrong. Which seems hard if only selected system call defines will be
> > converted to the new defines.
> >
> > How can you tell that nothing has been forgotten?
> >
> > Also, what happens if the prototype of a system call get's changed shortly
> > after it was merged. We might miss such changes and have bugs.
> >
>
> As for now, there's no such proof, and everything is OK. Syscall ABI
> is extremely conservative, and Greg KH, and other people spent a lot
> of efforts to keep it that way. This is the only reason for me to not
> worry much about it. Modification of syscall ABI is virtually
> impossible now, because it breaks binary compatibility. Even addition
> of new syscall is very difficult procedure.
> (Documentation/adding-syscalls.txt begins with section "System Call
> Alternatives".)
Well... during the years a lot of system calls have been added. And we've
also seen last-minute changes or reverts. So I don't share your optimistic
view here :)
See e.g. 485d52768685 ("sys_personality: change sys_personality() to accept
"unsigned int" instead of u_long") would have been a candidate which could
silently break architectures which need compat wrappers.
> We can invent some protection, but it will cost us in complexity and/or
> runtime delays. Because syscall ABI is so stable, I think it's OK to
> review wrappers carefully once, and they will be fine for long time.
Here I don't agree with you. These interfaces are so important that I'd
like to have a waterproof method that these don't break. If this involves
a couple of superfluous instructions then that's what I'm willing to pay
for it.
> > Before doing that I think you should actually revert this patch: my commit
> > 7681df456f97 ("s390/compat: remove superfluous compat wrappers") probably
> > wasn't a very bright idea :)
> This patch is OK for me. pid_t, uid_t, gid_t, unsigned and signed int
> types are all 32-bit both on LP64 and ILP32. Normally, compiler should
> care about top halves... Did I miss something?
The patch was correct when writing it, but e.g. a patch like named above
would introduce a possible bug which would go in unnoticed.
The only thing we save is a _single_ unconditional branch here. I'd say
that's well worth it if you get a (hopefully) always bug free sign and zero
extension infrastructure in return.
> I don't know much about s390 specifics. Maybe because of that I do not
> understand completely your worries. I'm OK with both 1st and 2nd
> version, but I'd choose 2nd one because it allows inlines, and we
> don't need the compat_wrapper.c.
It would be only nicer if we can guarentee correctness all the time. That
being said I'm about to revert my own commit :)
So if you want to go without compat_wrapper.c then we should have a
solution which will do the right thing all the time without that a system
call author has to know about the sign and zero extension issue some
architectures face. It _will_ go wrong.
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Re: [PATCH 1/5] all: s390: move wrapper infrastructure to generic headers Heiko Carstens <heiko.carstens@de.ibm.com> - 2016-01-28 13:20 +0100
Re: [PATCH 1/5] all: s390: move wrapper infrastructure to generic headers Yury Norov <ynorov@caviumnetworks.com> - 2016-01-28 17:40 +0100
Re: [PATCH 1/5] all: s390: move wrapper infrastructure to generic headers Yury Norov <ynorov@caviumnetworks.com> - 2016-02-01 12:50 +0100
Re: [PATCH 1/5] all: s390: move wrapper infrastructure to generic headers Heiko Carstens <heiko.carstens@de.ibm.com> - 2016-02-02 08:40 +0100
Re: [PATCH 1/5] all: s390: move wrapper infrastructure to generic headers Yury Norov <ynorov@caviumnetworks.com> - 2016-02-02 16:50 +0100
Re: [PATCH 1/5] all: s390: move wrapper infrastructure to generic headers Heiko Carstens <heiko.carstens@de.ibm.com> - 2016-02-02 17:10 +0100
Re: [PATCH 1/5] all: s390: move wrapper infrastructure to generic headers Heiko Carstens <heiko.carstens@de.ibm.com> - 2016-02-02 21:00 +0100
Re: [PATCH 1/5] all: s390: move wrapper infrastructure to generic headers Yury Norov <ynorov@caviumnetworks.com> - 2016-02-02 21:50 +0100
Re: [PATCH 1/5] all: s390: move wrapper infrastructure to generic headers Heiko Carstens <heiko.carstens@de.ibm.com> - 2016-02-03 09:10 +0100
csiph-web