20 Sep, 2018

1 commit

  • commit 0633da48f0793aeba27f82d30605624416723a91 upstream.

    autofs_sbi() does not check the superblock magic number to verify it has
    been given an autofs super block.

    Backport Note: autofs4 has been renamed to autofs upstream. As a result
    the upstream patch does not apply cleanly onto 4.14.y.

    Link: http://lkml.kernel.org/r/153475422934.17131.7563724552005298277.stgit@pluto.themaw.net
    Reported-by:
    Signed-off-by: Ian Kent
    Reviewed-by: Andrew Morton
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds
    Signed-off-by: Zubin Mithra
    Signed-off-by: Greg Kroah-Hartman

    Ian Kent
     

22 Jul, 2018

1 commit

  • commit 02f51d45937f7bc7f4dee21e9f85b2d5eac37104 upstream.

    The autofs subsystem does not check that the "path" parameter is present
    for all cases where it is required when it is passed in via the "param"
    struct.

    In particular it isn't checked for the AUTOFS_DEV_IOCTL_OPENMOUNT_CMD
    ioctl command.

    To solve it, modify validate_dev_ioctl(function to check that a path has
    been provided for ioctl commands that require it.

    Link: http://lkml.kernel.org/r/153060031527.26631.18306637892746301555.stgit@pluto.themaw.net
    Signed-off-by: Tomas Bortoli
    Signed-off-by: Ian Kent
    Reported-by: syzbot+60c837b428dc84e83a93@syzkaller.appspotmail.com
    Cc: Dmitry Vyukov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds
    Signed-off-by: Greg Kroah-Hartman

    Tomas Bortoli
     

24 Apr, 2018

1 commit

  • commit 1e6306652ba18723015d1b4967fe9de55f042499 upstream.

    The autofs file system mkdir inode operation blindly sets the created
    directory mode to S_IFDIR | 0555, ingoring the passed in mode, which can
    cause selinux dac_override denials.

    But the function also checks if the caller is the daemon (as no-one else
    should be able to do anything here) so there's no point in not honouring
    the passed in mode, allowing the daemon to set appropriate mode when
    required.

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

    Ian Kent
     

20 Dec, 2017

1 commit

  • commit 302ec300ef8a545a7fc7f667e5fd743b091c2eeb upstream.

    Commit ecc0c469f277 ("autofs: don't fail mount for transient error") was
    meant to replace an 'if' with a 'switch', but instead added the 'switch'
    leaving the case in place.

    Link: http://lkml.kernel.org/r/87zi6wstmw.fsf@notabene.neil.brown.name
    Fixes: ecc0c469f277 ("autofs: don't fail mount for transient error")
    Reported-by: Ben Hutchings
    Signed-off-by: NeilBrown
    Cc: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds
    Signed-off-by: Greg Kroah-Hartman

    NeilBrown
     

05 Dec, 2017

1 commit

  • commit 43694d4bf843ddd34519e8e9de983deefeada699 upstream.

    While commit 092a53452bb7 ("autofs: take more care to not update
    last_used on path walk") helped (partially) resolve a problem where
    automounts were not expiring due to aggressive accesses from user space
    it has a side effect for very large environments.

    This change helps with the expire problem by making the expire more
    aggressive but, for very large environments, that means more mount
    requests from clients. When there are a lot of clients that can mean
    fairly significant server load increases.

    It turns out I put the last_used in this position to solve this very
    problem and failed to update my own thinking of the autofs expire
    policy. So the patch being reverted introduces a regression which
    should be fixed.

    Link: http://lkml.kernel.org/r/151174729420.6162.1832622523537052460.stgit@pluto.themaw.net
    Fixes: 092a53452b ("autofs: take more care to not update last_used on path walk")
    Signed-off-by: Ian Kent
    Reviewed-by: NeilBrown
    Cc: Al Viro
    Cc: Colin Walters
    Cc: David Howells
    Cc: Ondrej Holy
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds
    Signed-off-by: Greg Kroah-Hartman

    Ian Kent
     

30 Nov, 2017

1 commit

  • commit ecc0c469f27765ed1e2b967be0aa17cee1a60b76 upstream.

    Currently if the autofs kernel module gets an error when writing to the
    pipe which links to the daemon, then it marks the whole moutpoint as
    catatonic, and it will stop working.

    It is possible that the error is transient. This can happen if the
    daemon is slow and more than 16 requests queue up. If a subsequent
    process tries to queue a request, and is then signalled, the write to
    the pipe will return -ERESTARTSYS and autofs will take that as total
    failure.

    So change the code to assess -ERESTARTSYS and -ENOMEM as transient
    failures which only abort the current request, not the whole mountpoint.

    It isn't a crash or a data corruption, but having autofs mountpoints
    suddenly stop working is rather inconvenient.

    Ian said:

    : And given the problems with a half dozen (or so) user space applications
    : consuming large amounts of CPU under heavy mount and umount activity this
    : could happen more easily than we expect.

    Link: http://lkml.kernel.org/r/87y3norvgp.fsf@notabene.neil.brown.name
    Signed-off-by: NeilBrown
    Acked-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds
    Signed-off-by: Greg Kroah-Hartman

    NeilBrown
     

15 Sep, 2017

1 commit

  • Pull more set_fs removal from Al Viro:
    "Christoph's 'use kernel_read and friends rather than open-coding
    set_fs()' series"

    * 'work.set_fs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    fs: unexport vfs_readv and vfs_writev
    fs: unexport vfs_read and vfs_write
    fs: unexport __vfs_read/__vfs_write
    lustre: switch to kernel_write
    gadget/f_mass_storage: stop messing with the address limit
    mconsole: switch to kernel_read
    btrfs: switch write_buf to kernel_write
    net/9p: switch p9_fd_read to kernel_write
    mm/nommu: switch do_mmap_private to kernel_read
    serial2002: switch serial2002_tty_write to kernel_{read/write}
    fs: make the buf argument to __kernel_write a void pointer
    fs: fix kernel_write prototype
    fs: fix kernel_read prototype
    fs: move kernel_read to fs/read_write.c
    fs: move kernel_write to fs/read_write.c
    autofs4: switch autofs4_write to __kernel_write
    ashmem: switch to ->read_iter

    Linus Torvalds
     

09 Sep, 2017

6 commits

  • The standard types unsigned int and unsigned long should be used for
    .compat_ioctl. autofs is the only fs using uing/ulong for this, and these
    are even the only uint/ulong in the entire autofs code.

    Drop unneeded long cast in return value of autofs_dev_ioctl_compat().
    It's already long.

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

    Tomohiro Kusumi
     
  • This comment was correct when it was added in 8d7b48e0 ("autofs4: add
    miscellaneous device for ioctls") in 2008, but not after 4e44b685 "Get rid
    of path_lookup in autofs4" in 2009 which introduced find_autofs_mount().

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

    Tomohiro Kusumi
     
  • Use a macro which defines misc-dev ioctl parameter size (excluding a path
    beyond &path[0]) since it's been used to initialize and copy this
    structure ever since it first appeared in 8d7b48e0 in 2008.

    (or simply get rid of this if this is just unnecessary abstraction when
    all it needs is sizeof(struct autofs_dev_ioctl))

    Edit: raven@themaw.net
    That's a good point but I'd prefer to keep the macro define.
    End edit: raven@themaw.net

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

    Tomohiro Kusumi
     
  • Having header includes before any macro (without any dependency) simply
    looks normal. No reason to have these macros in between.

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

    Tomohiro Kusumi
     
  • Some of the autofs miscellaneous device ioctls need to be accessable to
    user space applications without CAP_SYS_ADMIN to get information about
    autofs mounts.

    Link: http://lkml.kernel.org/r/150216642517.11652.2338933266137331637.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Cc: Colin Walters
    Cc: Ondrej Holy
    Cc: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • The autofs miscellanous device ioctls that shouldn't require
    CAP_SYS_ADMIN need to be accessible to user space applications in order
    to be able to get information about autofs mounts.

    The module checks capabilities so the miscelaneous device should be fine
    with broad permissions.

    Link: http://lkml.kernel.org/r/150216641928.11652.7388977863125547969.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Cc: Colin Walters
    Cc: Ondrej Holy
    Cc: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     

05 Sep, 2017

1 commit


11 Jul, 2017

1 commit

  • Commit ac6424b981bc ("sched/wait: Rename wait_queue_t =>
    wait_queue_entry_t") had scripted the renaming incorrectly, and didn't
    actually check that the 'wait_queue_t' was a full token.

    As a result, it also triggered on 'wait_queue_token', and renamed that
    to 'wait_queue_entry_token' entry in the autofs4 packet structure
    definition too. That was entirely incorrect, and not intended.

    The end result built fine when building just the kernel - because
    everything had been renamed consistently there - but caused problems in
    user space because the "struct autofs_packet_missing" type is exported
    as part of the uapi.

    This scripts it all back again:

    git grep -lw wait_queue_entry_token |
    xargs sed -i 's/wait_queue_entry_token/wait_queue_token/g'

    and checks the end result.

    Reported-by: Florian Fainelli
    Acked-by: Ingo Molnar
    Fixes: ac6424b981bc ("sched/wait: Rename wait_queue_t => wait_queue_entry_t")
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

24 Jun, 2017

2 commits


20 Jun, 2017

1 commit

  • Rename:

    wait_queue_t => wait_queue_entry_t

    'wait_queue_t' was always a slight misnomer: its name implies that it's a "queue",
    but in reality it's a queue *entry*. The 'real' queue is the wait queue head,
    which had to carry the name.

    Start sorting this out by renaming it to 'wait_queue_entry_t'.

    This also allows the real structure name 'struct __wait_queue' to
    lose its double underscore and become 'struct wait_queue_entry',
    which is the more canonical nomenclature for such data types.

    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

28 Mar, 2017

1 commit

  • URLs to ftp.kernel.org are still exist though the service is closed [0].
    This commit fixes the URLs to use www.kernel.org instead.

    [0] https://www.kernel.org/shutting-down-ftp-services.html

    Signed-off-by: SeongJae Park
    Signed-off-by: Jiri Kosina

    SeongJae Park
     

02 Mar, 2017

3 commits

  • Add #include dependencies to all .c files rely on sched.h
    doing that for them.

    Note that even if the count where we need to add extra headers seems high,
    it's still a net win, because is included in over
    2,200 files ...

    Acked-by: Linus Torvalds
    Cc: Mike Galbraith
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • We are going to split out of , which
    will have to be picked up from other headers and a couple of .c files.

    Create a trivial placeholder file that just
    maps to to make this patch obviously correct and
    bisectable.

    Include the new header in the files that are going to need it.

    Acked-by: Linus Torvalds
    Cc: Mike Galbraith
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • So rcupdate.h is a pretty complex header, in particular it includes
    which includes - creating a
    dependency that includes in ,
    which prevents the isolation of from the derived
    header.

    Solve part of the problem by decoupling rcupdate.h from completions:
    this can be done by separating out the rcu_synchronize types and APIs,
    and updating their usage sites.

    Since this is a mostly RCU-internal types this will not just simplify
    's dependencies, but will make all the hundreds of
    .c files that include rcupdate.h but not completions or wait.h build
    faster.

    ( For rcutiny this means that two dependent APIs have to be uninlined,
    but that shouldn't be much of a problem as they are rare variants. )

    Acked-by: Linus Torvalds
    Cc: Mike Galbraith
    Cc: Paul E. McKenney
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

28 Feb, 2017

2 commits

  • GUI environments seem to be becoming more agressive at scanning
    filesystems, to the point where autofs cannot expire mounts at all.

    This is one key reason the update of the autofs dentry info last_used
    field is done in the expire system when the dentry is seen to be in use.

    But somewhere along the way instances of the update has crept back into
    the autofs path walk functions which, with the more aggressive file
    access patterns, is preventing expiration.

    Changing the update in the path walk functions allows autofs to at least
    make progress in spite of frequent immediate re-mounts from file
    accesses.

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

    Ian Kent
     
  • This macro is already defined in uapi header. Also use this macro where
    possible.

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

    Tomohiro Kusumi
     

01 Feb, 2017

1 commit

  • To support unprivileged users mounting filesystems two permission
    checks have to be performed: a test to see if the user allowed to
    create a mount in the mount namespace, and a test to see if
    the user is allowed to access the specified filesystem.

    The automount case is special in that mounting the original filesystem
    grants permission to mount the sub-filesystems, to any user who
    happens to stumble across the their mountpoint and satisfies the
    ordinary filesystem permission checks.

    Attempting to handle the automount case by using override_creds
    almost works. It preserves the idea that permission to mount
    the original filesystem is permission to mount the sub-filesystem.
    Unfortunately using override_creds messes up the filesystems
    ordinary permission checks.

    Solve this by being explicit that a mount is a submount by introducing
    vfs_submount, and using it where appropriate.

    vfs_submount uses a new mount internal mount flags MS_SUBMOUNT, to let
    sget and friends know that a mount is a submount so they can take appropriate
    action.

    sget and sget_userns are modified to not perform any permission checks
    on submounts.

    follow_automount is modified to stop using override_creds as that
    has proven problemantic.

    do_mount is modified to always remove the new MS_SUBMOUNT flag so
    that we know userspace will never by able to specify it.

    autofs4 is modified to stop using current_real_cred that was put in
    there to handle the previous version of submount permission checking.

    cifs is modified to pass the mountpoint all of the way down to vfs_submount.

    debugfs is modified to pass the mountpoint all of the way down to
    trace_automount by adding a new parameter. To make this change easier
    a new typedef debugfs_automount_t is introduced to capture the type of
    the debugfs automount function.

    Cc: stable@vger.kernel.org
    Fixes: 069d5ac9ae0d ("autofs: Fix automounts by using current_real_cred()->uid")
    Fixes: aeaa4a79ff6a ("fs: Call d_automount with the filesystems creds")
    Reviewed-by: Trond Myklebust
    Reviewed-by: Seth Forshee
    Signed-off-by: "Eric W. Biederman"

    Eric W. Biederman
     

18 Dec, 2016

2 commits

  • …/linux/kernel/git/mszeredi/vfs

    Pull partial readlink cleanups from Miklos Szeredi.

    This is the uncontroversial part of the readlink cleanup patch-set that
    simplifies the default readlink handling.

    Miklos and Al are still discussing the rest of the series.

    * git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs:
    vfs: make generic_readlink() static
    vfs: remove ".readlink = generic_readlink" assignments
    vfs: default to generic_readlink()
    vfs: replace calling i_op->readlink with vfs_readlink()
    proc/self: use generic_readlink
    ecryptfs: use vfs_get_link()
    bad_inode: add missing i_op initializers

    Linus Torvalds
     
  • Pull more vfs updates from Al Viro:
    "In this pile:

    - autofs-namespace series
    - dedupe stuff
    - more struct path constification"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (40 commits)
    ocfs2: implement the VFS clone_range, copy_range, and dedupe_range features
    ocfs2: charge quota for reflinked blocks
    ocfs2: fix bad pointer cast
    ocfs2: always unlock when completing dio writes
    ocfs2: don't eat io errors during _dio_end_io_write
    ocfs2: budget for extent tree splits when adding refcount flag
    ocfs2: prohibit refcounted swapfiles
    ocfs2: add newlines to some error messages
    ocfs2: convert inode refcount test to a helper
    simple_write_end(): don't zero in short copy into uptodate
    exofs: don't mess with simple_write_{begin,end}
    9p: saner ->write_end() on failing copy into non-uptodate page
    fix gfs2_stuffed_write_end() on short copies
    fix ceph_write_end()
    nfs_write_end(): fix handling of short copies
    vfs: refactor clone/dedupe_file_range common functions
    fs: try to clone files first in vfs_copy_file_range
    vfs: misc struct path constification
    namespace.c: constify struct path passed to a bunch of primitives
    quota: constify struct path in quota_on
    ...

    Linus Torvalds
     

17 Dec, 2016

1 commit


09 Dec, 2016

1 commit


06 Dec, 2016

1 commit


05 Dec, 2016

1 commit


04 Dec, 2016

6 commits

  • Commit 7cbdb4a286 altered the autofs indirect mount expire to
    not hold a spin lock during the expire check.

    The direct mount expire needs the same treatment because to
    make autofs expires namespace aware may_umount_tree() needs to
    to use a similar method to may_umount() when checking if a mount
    tree is in use.

    This means may_umount_tree() will end up taking the namespace_sem
    for the check so the autofs direct mount expire won't be allowed
    to hold a spin lock over the check.

    Signed-off-by: Ian Kent
    Cc: Al Viro
    Cc: Eric W. Biederman
    Cc: Omar Sandoval
    Signed-off-by: Al Viro

    Ian Kent
     
  • Signed-off-by: Ian Kent
    Cc: Al Viro
    Cc: Eric W. Biederman
    Cc: Omar Sandoval
    Signed-off-by: Al Viro

    Ian Kent
     
  • If an automount mount is clone(2)ed into a file system that is propagation
    private, when it later expires in the originating namespace, subsequent
    calls to autofs ->d_automount() for that dentry in the original namespace
    will return ELOOP until the mount is umounted in the cloned namespace.

    Now that a struct path is available where needed use path_has_submounts()
    instead of have_submounts() so we don't get false positives when checking
    if a dentry is a mount point or contains mounts in the current namespace.

    Link: http://lkml.kernel.org/r/20161011053423.27645.91233.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Cc: Al Viro
    Cc: Eric W. Biederman
    Cc: Omar Sandoval
    Signed-off-by: Andrew Morton
    Signed-off-by: Al Viro

    Ian Kent
     
  • If an automount mount is clone(2)ed into a file system that is propagation
    private, when it later expires in the originating namespace, subsequent
    calls to autofs ->d_automount() for that dentry in the original namespace
    will return ELOOP until the mount is umounted in the cloned namespace.

    Now that a struct path is available where needed use path_is_mountpoint()
    instead of d_mountpoint() so we don't get false positives when checking if
    a dentry is a mount point in the current namespace.

    Link: http://lkml.kernel.org/r/20161011053418.27645.15241.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Cc: Al Viro
    Cc: Eric W. Biederman
    Cc: Omar Sandoval
    Signed-off-by: Andrew Morton
    Signed-off-by: Al Viro

    Ian Kent
     
  • In order to use the functions path_is_mountpoint() and path_has_submounts()
    autofs needs to pass a struct path in several places.

    Now change autofs4_wait() to take a struct path instead of a struct
    dentry.

    Link: http://lkml.kernel.org/r/20161011053413.27645.84666.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Cc: Al Viro
    Cc: Eric W. Biederman
    Cc: Omar Sandoval
    Signed-off-by: Andrew Morton
    Signed-off-by: Al Viro

    Ian Kent
     
  • In order to use the functions path_is_mountpoint() and path_has_submounts()
    autofs needs to pass a struct path in several places.

    Start by changing autofs4_expire_wait() and do_expire_wait() to take
    a struct path instead of a struct dentry.

    Link: http://lkml.kernel.org/r/20161011053408.27645.40091.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Cc: Al Viro
    Cc: Eric W. Biederman
    Cc: Omar Sandoval
    Signed-off-by: Andrew Morton
    Signed-off-by: Al Viro

    Ian Kent
     

03 Dec, 2016

1 commit

  • For the autofs module to be able to reliably check if a dentry is a
    mountpoint in a multiple namespace environment the ->d_manage() dentry
    operation will need to take a path argument instead of a dentry.

    Link: http://lkml.kernel.org/r/20161011053352.27645.83962.stgit@pluto.themaw.net
    Signed-off-by: Ian Kent
    Cc: Al Viro
    Cc: Eric W. Biederman
    Cc: Omar Sandoval
    Signed-off-by: Andrew Morton
    Signed-off-by: Al Viro

    Ian Kent
     

12 Oct, 2016

2 commits

  • cmd part of this struct is the same as an index of itself within
    _ioctls[]. In fact this cmd is unused, so we can drop this part.

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

    Tomohiro Kusumi
     
  • Having this in autofs_i.h gives illusion that uncommenting this enables
    pr_debug(), but it doesn't enable all the pr_debug() in autofs because
    inclusion order matters.

    XFS has the same DEBUG macro in its core header fs/xfs/xfs.h, however XFS
    seems to have a rule to include this prior to other XFS headers as well as
    kernel headers. This is not the case with autofs, and DEBUG could be
    enabled via Makefile, so autofs should just get rid of this comment to
    make the code less confusing. It's a comment, so there is literally no
    functional difference.

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

    Tomohiro Kusumi