lkml.org 
[lkml]   [2014]   [Sep]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.14 076/114] mnt: Change the default remount atime from relatime to the existing value
    Date
    3.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: "Eric W. Biederman" <ebiederm@xmission.com>

    commit ffbc6f0ead47fa5a1dc9642b0331cb75c20a640e upstream.

    Since March 2009 the kernel has treated the state that if no
    MS_..ATIME flags are passed then the kernel defaults to relatime.

    Defaulting to relatime instead of the existing atime state during a
    remount is silly, and causes problems in practice for people who don't
    specify any MS_...ATIME flags and to get the default filesystem atime
    setting. Those users may encounter a permission error because the
    default atime setting does not work.

    A default that does not work and causes permission problems is
    ridiculous, so preserve the existing value to have a default
    atime setting that is always guaranteed to work.

    Using the default atime setting in this way is particularly
    interesting for applications built to run in restricted userspace
    environments without /proc mounted, as the existing atime mount
    options of a filesystem can not be read from /proc/mounts.

    In practice this fixes user space that uses the default atime
    setting on remount that are broken by the permission checks
    keeping less privileged users from changing more privileged users
    atime settings.

    Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/namespace.c | 8 ++++++++
    1 file changed, 8 insertions(+)

    --- a/fs/namespace.c
    +++ b/fs/namespace.c
    @@ -2464,6 +2464,14 @@ long do_mount(const char *dev_name, cons
    if (flags & MS_RDONLY)
    mnt_flags |= MNT_READONLY;

    + /* The default atime for remount is preservation */
    + if ((flags & MS_REMOUNT) &&
    + ((flags & (MS_NOATIME | MS_NODIRATIME | MS_RELATIME |
    + MS_STRICTATIME)) == 0)) {
    + mnt_flags &= ~MNT_ATIME_MASK;
    + mnt_flags |= path.mnt->mnt_flags & MNT_ATIME_MASK;
    + }
    +
    flags &= ~(MS_NOSUID | MS_NOEXEC | MS_NODEV | MS_ACTIVE | MS_BORN |
    MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT |
    MS_STRICTATIME);



    \
     
     \ /
      Last update: 2014-09-15 22:21    [W:5.911 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site