Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sun, 28 Jan 2018 11:15:15 -0800
From: Linus Torvalds <>
To: Andy Lutomirski <>
Cc: "the arch/x86 maintainers" <>, LKML <>, 
	Kernel Hardening <>, Borislav Petkov <>
Subject: Re: [PATCH 3/3] syscalls: Add a bit of documentation to __SYSCALL_DEFINE

On Sun, Jan 28, 2018 at 10:38 AM, Andy Lutomirski <> wrote:
> __SYSCALL_DEFINE is rather magical.  Add a bit of documentation.


Is that "long long" part of the example on purpose? Because that's
likely the only really nasty part about any ptregs wrapper: some
arguments aren't _one_ register, they are two. And "long long" is the
simplest example, even though in practice the type is most often

You won't see this on 64-bit architectures, but it's visible on 32-bit ones.

We may have to do wrappers for those, and error out for 'long long'.
We already do that for some cases, for compat system calls. See for

COMPAT_SYSCALL_DEFINE5(preadv, compat_ulong_t, fd,
                const struct compat_iovec __user *,vec,
                compat_ulong_t, vlen, u32, pos_low, u32, pos_high)
        loff_t pos = ((loff_t)pos_high << 32) | pos_low;

        return do_compat_preadv64(fd, vec, vlen, pos, 0);

where we have the issue of a 64-bit value being split over two
registers even on 64-bit, due to it being a compat interface for 32

But if we pick up the values by hand from ptregs in a wrapper, we'll
have this issue even for native calls on 32-bit.


Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.