diff mbox series

[2/7] fs: cifs: Fix atime update check vs mtime

Message ID 20191130053030.7868-3-deepa.kernel@gmail.com (mailing list archive)
State New, archived
Headers show
Series Delete timespec64_trunc() | expand

Commit Message

Deepa Dinamani Nov. 30, 2019, 5:30 a.m. UTC
According to the comment in the code and commit log, some apps
expect atime >= mtime; but the introduced code results in
atime==mtime.  Fix the comparison to guard against atime<mtime.

Fixes: 9b9c5bea0b96 ("cifs: do not return atime less than mtime")
Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
Cc: stfrench@microsoft.com
Cc: linux-cifs@vger.kernel.org
---
 fs/cifs/inode.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Steve French Dec. 1, 2019, 6:23 p.m. UTC | #1
merged into cifs-2.6.git for-next

On Fri, Nov 29, 2019 at 11:34 PM Deepa Dinamani <deepa.kernel@gmail.com> wrote:
>
> According to the comment in the code and commit log, some apps
> expect atime >= mtime; but the introduced code results in
> atime==mtime.  Fix the comparison to guard against atime<mtime.
>
> Fixes: 9b9c5bea0b96 ("cifs: do not return atime less than mtime")
> Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
> Cc: stfrench@microsoft.com
> Cc: linux-cifs@vger.kernel.org
> ---
>  fs/cifs/inode.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
> index 8a76195e8a69..ca76a9287456 100644
> --- a/fs/cifs/inode.c
> +++ b/fs/cifs/inode.c
> @@ -163,7 +163,7 @@ cifs_fattr_to_inode(struct inode *inode, struct cifs_fattr *fattr)
>
>         spin_lock(&inode->i_lock);
>         /* we do not want atime to be less than mtime, it broke some apps */
> -       if (timespec64_compare(&fattr->cf_atime, &fattr->cf_mtime))
> +       if (timespec64_compare(&fattr->cf_atime, &fattr->cf_mtime) < 0)
>                 inode->i_atime = fattr->cf_mtime;
>         else
>                 inode->i_atime = fattr->cf_atime;
> --
> 2.17.1
>
diff mbox series

Patch

diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index 8a76195e8a69..ca76a9287456 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -163,7 +163,7 @@  cifs_fattr_to_inode(struct inode *inode, struct cifs_fattr *fattr)
 
 	spin_lock(&inode->i_lock);
 	/* we do not want atime to be less than mtime, it broke some apps */
-	if (timespec64_compare(&fattr->cf_atime, &fattr->cf_mtime))
+	if (timespec64_compare(&fattr->cf_atime, &fattr->cf_mtime) < 0)
 		inode->i_atime = fattr->cf_mtime;
 	else
 		inode->i_atime = fattr->cf_atime;