31 Jul, 2018

2 commits


27 Jul, 2018

1 commit


08 Jun, 2018

2 commits

  • Remove includes that aren't needed from autofs (and fs/compat_ioctl.c).

    Link: http://lkml.kernel.org/r/152635085258.5968.9743527195522188148.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • The autofs module has long since been removed so there's no need to have
    two separate include files for autofs.

    Link: http://lkml.kernel.org/r/152626703024.28589.9571964661718767929.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     

29 Dec, 2017

1 commit


13 Dec, 2017

1 commit


18 Nov, 2017

2 commits

  • Pull misc vfs updates from Al Viro:
    "Assorted stuff, really no common topic here"

    * 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    vfs: grab the lock instead of blocking in __fd_install during resizing
    vfs: stop clearing close on exec when closing a fd
    include/linux/fs.h: fix comment about struct address_space
    fs: make fiemap work from compat_ioctl
    coda: fix 'kernel memory exposure attempt' in fsync
    pstore: remove unneeded unlikely()
    vfs: remove unneeded unlikely()
    stubs for mount_bdev() and kill_block_super() in !CONFIG_BLOCK case
    make vfs_ustat() static
    do_handle_open() should be static
    elf_fdpic: fix unused variable warning
    fold destroy_super() into __put_super()
    new helper: destroy_unused_super()
    fix address space warnings in ipc/
    acct.h: get rid of detritus

    Linus Torvalds
     
  • Pull compat and uaccess updates from Al Viro:

    - {get,put}_compat_sigset() series

    - assorted compat ioctl stuff

    - more set_fs() elimination

    - a few more timespec64 conversions

    - several removals of pointless access_ok() in places where it was
    followed only by non-__ variants of primitives

    * 'misc.compat' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (24 commits)
    coredump: call do_unlinkat directly instead of sys_unlink
    fs: expose do_unlinkat for built-in callers
    ext4: take handling of EXT4_IOC_GROUP_ADD into a helper, get rid of set_fs()
    ipmi: get rid of pointless access_ok()
    pi433: sanitize ioctl
    cxlflash: get rid of pointless access_ok()
    mtdchar: get rid of pointless access_ok()
    r128: switch compat ioctls to drm_ioctl_kernel()
    selection: get rid of field-by-field copyin
    VT_RESIZEX: get rid of field-by-field copyin
    i2c compat ioctls: move to ->compat_ioctl()
    sched_rr_get_interval(): move compat to native, get rid of set_fs()
    mips: switch to {get,put}_compat_sigset()
    sparc: switch to {get,put}_compat_sigset()
    s390: switch to {get,put}_compat_sigset()
    ppc: switch to {get,put}_compat_sigset()
    parisc: switch to {get,put}_compat_sigset()
    get_compat_sigset()
    get rid of {get,put}_compat_itimerspec()
    io_getevents: Use timespec64 to represent timeouts
    ...

    Linus Torvalds
     

06 Nov, 2017

1 commit

  • We don't need to do anything special with fiemap to make it work with a
    64bit kernel from 32bit userspace, so just go down to do_vfs_ioctl().
    Without this patch we were incorrectly failing to do fiemap with a 32bit
    userspace on a 64bit kernel.

    Signed-off-by: Josef Bacik
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Al Viro

    Josef Bacik
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

20 Sep, 2017

1 commit


05 Sep, 2017

1 commit


09 Jul, 2017

1 commit


09 Jun, 2017

1 commit

  • In order to avoid future diversions between fs/compat_ioctl.c and
    drivers/tty/pty.c, define .compat_ioctl callbacks for the relevant
    tty_operations structs. Since both pty_unix98_ioctl() and
    pty_bsd_ioctl() are compatible between 32-bit and 64-bit userspace no
    special translation is required.

    Signed-off-by: Aleksa Sarai
    Reviewed-by: Arnd Bergmann
    Signed-off-by: Greg Kroah-Hartman

    Aleksa Sarai
     

26 May, 2017

1 commit


30 Apr, 2017

1 commit


25 Dec, 2016

1 commit


24 Sep, 2016

1 commit


28 Jun, 2016

1 commit

  • The CEC ioctls didn't have compat32 support, so they returned -ENOTTY
    when used in a 32 bit application on a 64 bit kernel.

    Since all the CEC ioctls are 32-bit compatible adding support for this
    API is trivial.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     

15 Feb, 2016

1 commit


09 Feb, 2016

1 commit


27 Jan, 2016

1 commit


13 Jan, 2016

2 commits

  • Pull misc vfs updates from Al Viro:
    "All kinds of stuff. That probably should've been 5 or 6 separate
    branches, but by the time I'd realized how large and mixed that bag
    had become it had been too close to -final to play with rebasing.

    Some fs/namei.c cleanups there, memdup_user_nul() introduction and
    switching open-coded instances, burying long-dead code, whack-a-mole
    of various kinds, several new helpers for ->llseek(), assorted
    cleanups and fixes from various people, etc.

    One piece probably deserves special mention - Neil's
    lookup_one_len_unlocked(). Similar to lookup_one_len(), but gets
    called without ->i_mutex and tries to avoid ever taking it. That, of
    course, means that it's not useful for any directory modifications,
    but things like getting inode attributes in nfds readdirplus are fine
    with that. I really should've asked for moratorium on lookup-related
    changes this cycle, but since I hadn't done that early enough... I
    *am* asking for that for the coming cycle, though - I'm going to try
    and get conversion of i_mutex to rwsem with ->lookup() done under lock
    taken shared.

    There will be a patch closer to the end of the window, along the lines
    of the one Linus had posted last May - mechanical conversion of
    ->i_mutex accesses to inode_lock()/inode_unlock()/inode_trylock()/
    inode_is_locked()/inode_lock_nested(). To quote Linus back then:

    -----
    | This is an automated patch using
    |
    | sed 's/mutex_lock(&\(.*\)->i_mutex)/inode_lock(\1)/'
    | sed 's/mutex_unlock(&\(.*\)->i_mutex)/inode_unlock(\1)/'
    | sed 's/mutex_lock_nested(&\(.*\)->i_mutex,[ ]*I_MUTEX_\([A-Z0-9_]*\))/inode_lock_nested(\1, I_MUTEX_\2)/'
    | sed 's/mutex_is_locked(&\(.*\)->i_mutex)/inode_is_locked(\1)/'
    | sed 's/mutex_trylock(&\(.*\)->i_mutex)/inode_trylock(\1)/'
    |
    | with a very few manual fixups
    -----

    I'm going to send that once the ->i_mutex-affecting stuff in -next
    gets mostly merged (or when Linus says he's about to stop taking
    merges)"

    * 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (63 commits)
    nfsd: don't hold i_mutex over userspace upcalls
    fs:affs:Replace time_t with time64_t
    fs/9p: use fscache mutex rather than spinlock
    proc: add a reschedule point in proc_readfd_common()
    logfs: constify logfs_block_ops structures
    fcntl: allow to set O_DIRECT flag on pipe
    fs: __generic_file_splice_read retry lookup on AOP_TRUNCATED_PAGE
    fs: xattr: Use kvfree()
    [s390] page_to_phys() always returns a multiple of PAGE_SIZE
    nbd: use ->compat_ioctl()
    fs: use block_device name vsprintf helper
    lib/vsprintf: add %*pg format specifier
    fs: use gendisk->disk_name where possible
    poll: plug an unused argument to do_poll
    amdkfd: don't open-code memdup_user()
    cdrom: don't open-code memdup_user()
    rsxx: don't open-code memdup_user()
    mtip32xx: don't open-code memdup_user()
    [um] mconsole: don't open-code memdup_user_nul()
    [um] hostaudio: don't open-code memdup_user()
    ...

    Linus Torvalds
     
  • Pull vfs copy_file_range updates from Al Viro:
    "Several series around copy_file_range/CLONE"

    * 'work.copy_file_range' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    btrfs: use new dedupe data function pointer
    vfs: hoist the btrfs deduplication ioctl to the vfs
    vfs: wire up compat ioctl for CLONE/CLONE_RANGE
    cifs: avoid unused variable and label
    nfsd: implement the NFSv4.2 CLONE operation
    nfsd: Pass filehandle to nfs4_preprocess_stateid_op()
    vfs: pull btrfs clone API to vfs layer
    locks: new locks_mandatory_area calling convention
    vfs: Add vfs_copy_file_range() support for pagecache copies
    btrfs: add .copy_file_range file operation
    x86: add sys_copy_file_range to syscall tables
    vfs: add copy_file_range syscall and vfs helper

    Linus Torvalds
     

09 Jan, 2016

4 commits

  • Signed-off-by: Al Viro

    Al Viro
     
  • This replaces all code in fs/compat_ioctl.c that translated
    ioctl arguments into a in-kernel structure, then performed
    do_ioctl under set_fs(KERNEL_DS), with code that allocates
    data on the user stack and can call the VFS ioctl handler
    under USER_DS.

    This is done as a hardening measure because the caller
    does not know what kind of ioctl handler will be invoked,
    only that no corresponding compat_ioctl handler exists and
    what the ioctl command number is. The accidental
    invocation of an unlocked_ioctl handler that unexpectedly
    calls copy_to_user could be a severe security issue.

    Signed-off-by: Jann Horn
    Signed-off-by: Al Viro

    Jann Horn
     
  • Signed-off-by: Al Viro

    Al Viro
     
  • In code in fs/compat_ioctl.c that translates ioctl arguments
    into a in-kernel structure, then performs sys_ioctl, possibly
    under set_fs(KERNEL_DS), this commit changes the sys_ioctl
    calls to do_ioctl calls. do_ioctl is a new function that does
    the same thing as sys_ioctl, but doesn't look up the fd again.

    This change is made to avoid (potential) security issues
    because of ioctl handlers that accept one of the ioctl
    commands I2C_FUNCS, VIDEO_GET_EVENT, MTIOCPOS, MTIOCGET,
    TIOCGSERIAL, TIOCSSERIAL, RTC_IRQP_READ, RTC_EPOCH_READ.
    This can happen for multiple reasons:

    - The ioctl command number could be reused.
    - The ioctl handler might not check the full ioctl
    command. This is e.g. true for drm_ioctl.
    - The ioctl handler is very special, e.g. cuse_file_ioctl

    The real issue is that set_fs(KERNEL_DS) is used here,
    but that's fixed in a separate commit
    "compat_ioctl: don't call do_ioctl under set_fs(KERNEL_DS)".

    This change mitigates potential security issues by
    preventing a race that permits invocation of
    unlocked_ioctl handlers under KERNEL_DS through compat
    code even if a corresponding compat_ioctl handler exists.

    So far, no way has been identified to use this to damage
    kernel memory without having CAP_SYS_ADMIN in the init ns
    (with the capability, doing reads/writes at arbitrary
    kernel addresses should be easy through CUSE's ioctl
    handler with FUSE_IOCTL_UNRESTRICTED set).

    [AV: two missed sys_ioctl() taken care of]

    Signed-off-by: Jann Horn
    Signed-off-by: Al Viro

    Jann Horn
     

01 Jan, 2016

2 commits


24 Oct, 2015

1 commit


10 Jul, 2015

1 commit

  • The FITRIM ioctl has the same arguments on 32-bit and 64-bit
    architectures, so we can add it to the list of compatible ioctls and
    drop it from compat_ioctl method of various filesystems.

    Signed-off-by: Mikulas Patocka
    Cc: Al Viro
    Cc: Ted Ts'o
    Signed-off-by: Linus Torvalds

    Mikulas Patocka
     

04 Apr, 2015

1 commit

  • This is needed if user space wants to know supported bnep features
    by kernel, e.g. if kernel supports sending response to bnep setup
    control message. By now there is no possibility to know supported
    features by kernel in case of bnep. Ioctls allows only to add connection,
    delete connection, get connection list, get connection info. Adding
    connection if it's possible (establishing network device connection) is
    equivalent to starting bnep session. Bnep session handles data queue of
    transmit, receive messages over bnep channel. It means that if we add
    connection the received/transmitted data will be parsed immediately. In
    case of get bnep features we want to know before session start, if we
    should leave setup data on socket queue and let kernel to handle with it,
    or in case of no setup handling support, if we should pull this message
    and handle setup response within user space.

    Signed-off-by: Grzegorz Kolodziejczyk
    Signed-off-by: Marcel Holtmann

    Grzegorz Kolodziejczyk
     

11 Jul, 2014

1 commit

  • All the HCI sockets and ioctl based definitions have been in a global
    header file that also includes all the HCI protocol structures. To
    make this a bit cleaner, move them into its own file.

    This also adjusts fs/compat_ioctl.c to only include this new file
    and not all the protocol structures that are not needed.

    Signed-off-by: Marcel Holtmann
    Signed-off-by: Johan Hedberg

    Marcel Holtmann
     

06 Mar, 2014

1 commit

  • Some fs compat system calls have unsigned long parameters instead of
    compat_ulong_t.
    In order to allow the COMPAT_SYSCALL_DEFINE macro generate code that
    performs proper zero and sign extension convert all 64 bit parameters
    their corresponding 32 bit counterparts.

    compat_sys_io_getevents() is a bit different: the non-compat version
    has signed parameters for the "min_nr" and "nr" parameters while the
    compat version has unsigned parameters.
    So change this as well. For all practical purposes this shouldn't make
    any difference (doesn't fix a real bug).
    Also introduce a generic compat_aio_context_t type which can be used
    everywhere.
    The access_ok() check within compat_sys_io_getevents() got also removed
    since the non-compat sys_io_getevents() should be able to handle
    everything anyway.

    Signed-off-by: Heiko Carstens

    Heiko Carstens
     

22 Jan, 2014

1 commit


25 Oct, 2013

1 commit


29 Jun, 2013

1 commit


05 May, 2013

1 commit