Merge tag 'mm-stable-2023-02-20-13-37' of git://git.kernel.org/pub/scm/linux/kernel...
[sfrench/cifs-2.6.git] / mm / fadvise.c
index bf04fec87f3563498a884f61328365d79d0f5034..fb7c5f43fd2a65730e0d1a8d44b568e3580f17b3 100644 (file)
@@ -80,7 +80,7 @@ int generic_fadvise(struct file *file, loff_t offset, loff_t len, int advice)
        case POSIX_FADV_NORMAL:
                file->f_ra.ra_pages = bdi->ra_pages;
                spin_lock(&file->f_lock);
-               file->f_mode &= ~FMODE_RANDOM;
+               file->f_mode &= ~(FMODE_RANDOM | FMODE_NOREUSE);
                spin_unlock(&file->f_lock);
                break;
        case POSIX_FADV_RANDOM:
@@ -107,6 +107,9 @@ int generic_fadvise(struct file *file, loff_t offset, loff_t len, int advice)
                force_page_cache_readahead(mapping, file, start_index, nrpages);
                break;
        case POSIX_FADV_NOREUSE:
+               spin_lock(&file->f_lock);
+               file->f_mode |= FMODE_NOREUSE;
+               spin_unlock(&file->f_lock);
                break;
        case POSIX_FADV_DONTNEED:
                __filemap_fdatawrite_range(mapping, offset, endbyte,