lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200817073953.GA14500@lst.de>
Date:   Mon, 17 Aug 2020 09:39:53 +0200
From:   Christoph Hellwig <hch@....de>
To:     Linus Torvalds <torvalds@...ux-foundation.org>
Cc:     Al Viro <viro@...iv.linux.org.uk>,
        Michael Ellerman <mpe@...erman.id.au>, x86@...nel.org,
        Kees Cook <keescook@...omium.org>,
        linux-kernel@...r.kernel.org, linux-fsdevel@...r.kernel.org,
        linux-arch@...r.kernel.org, linuxppc-dev@...ts.ozlabs.org
Subject: Re: remove the last set_fs() in common code, and remove it for x86
 and powerpc

Adding Linus as I forgot to add him to the patch bomb, sorry..

On Mon, Aug 17, 2020 at 09:32:01AM +0200, Christoph Hellwig wrote:
> Hi all,
> 
> this series removes the last set_fs() used to force a kernel address
> space for the uaccess code in the kernel read/write/splice code, and then
> stops implementing the address space overrides entirely for x86 and
> powerpc.
> 
> The file system part has been posted a few times, and the read/write side
> has been pretty much unchanced.  For splice this series drops the
> conversion of the seq_file and sysctl code to the iter ops, and thus loses
> the splice support for them.  The reasons for that is that it caused a lot
> of churn for not much use - splice for these small files really isn't much
> of a win, even if existing userspace uses it.  All callers I found do the
> proper fallback, but if this turns out to be an issue the conversion can
> be resurrected.
> 
> Besides x86 and powerpc I plan to eventually convert all other
> architectures, although this will be a slow process, starting with the
> easier ones once the infrastructure is merged.  The process to convert
> architectures is roughtly:
> 
>  - ensure there is no set_fs(KERNEL_DS) left in arch specific code
>  - implement __get_kernel_nofault and __put_kernel_nofault
>  - remove the arch specific address limitation functionality
> 
> Diffstat:
>  arch/Kconfig                           |    3 
>  arch/alpha/Kconfig                     |    1 
>  arch/arc/Kconfig                       |    1 
>  arch/arm/Kconfig                       |    1 
>  arch/arm64/Kconfig                     |    1 
>  arch/c6x/Kconfig                       |    1 
>  arch/csky/Kconfig                      |    1 
>  arch/h8300/Kconfig                     |    1 
>  arch/hexagon/Kconfig                   |    1 
>  arch/ia64/Kconfig                      |    1 
>  arch/m68k/Kconfig                      |    1 
>  arch/microblaze/Kconfig                |    1 
>  arch/mips/Kconfig                      |    1 
>  arch/nds32/Kconfig                     |    1 
>  arch/nios2/Kconfig                     |    1 
>  arch/openrisc/Kconfig                  |    1 
>  arch/parisc/Kconfig                    |    1 
>  arch/powerpc/include/asm/processor.h   |    7 -
>  arch/powerpc/include/asm/thread_info.h |    5 -
>  arch/powerpc/include/asm/uaccess.h     |   78 ++++++++-----------
>  arch/powerpc/kernel/signal.c           |    3 
>  arch/powerpc/lib/sstep.c               |    6 -
>  arch/riscv/Kconfig                     |    1 
>  arch/s390/Kconfig                      |    1 
>  arch/sh/Kconfig                        |    1 
>  arch/sparc/Kconfig                     |    1 
>  arch/um/Kconfig                        |    1 
>  arch/x86/ia32/ia32_aout.c              |    1 
>  arch/x86/include/asm/page_32_types.h   |   11 ++
>  arch/x86/include/asm/page_64_types.h   |   38 +++++++++
>  arch/x86/include/asm/processor.h       |   60 ---------------
>  arch/x86/include/asm/thread_info.h     |    2 
>  arch/x86/include/asm/uaccess.h         |   26 ------
>  arch/x86/kernel/asm-offsets.c          |    3 
>  arch/x86/lib/getuser.S                 |   28 ++++---
>  arch/x86/lib/putuser.S                 |   21 +++--
>  arch/xtensa/Kconfig                    |    1 
>  drivers/char/mem.c                     |   16 ----
>  drivers/misc/lkdtm/bugs.c              |    2 
>  drivers/misc/lkdtm/core.c              |    4 +
>  drivers/misc/lkdtm/usercopy.c          |    2 
>  fs/read_write.c                        |   69 ++++++++++-------
>  fs/splice.c                            |  130 +++------------------------------
>  include/linux/fs.h                     |    2 
>  include/linux/uaccess.h                |   18 ++++
>  lib/test_bitmap.c                      |   10 ++
>  46 files changed, 235 insertions(+), 332 deletions(-)
---end quoted text---

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ