Merge tag 'fuse-update-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi...
[sfrench/cifs-2.6.git] / fs / fuse / file.c
index 3eb28aad56742fd2c11d1a818a55dedb8c99bced..de37a3a06a7169c628de17abe08ed14b56335108 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/falloc.h>
 #include <linux/uio.h>
 #include <linux/fs.h>
+#include <linux/filelock.h>
 #include <linux/file.h>
 
 static int fuse_send_open(struct fuse_mount *fm, u64 nodeid,
@@ -1350,7 +1351,8 @@ static ssize_t fuse_cache_write_iter(struct kiocb *iocb, struct iov_iter *from)
                        return err;
 
                if (fc->handle_killpriv_v2 &&
-                   setattr_should_drop_suidgid(&init_user_ns, file_inode(file))) {
+                   setattr_should_drop_suidgid(&nop_mnt_idmap,
+                                               file_inode(file))) {
                        goto writethrough;
                }
 
@@ -2221,7 +2223,7 @@ static bool fuse_writepage_need_send(struct fuse_conn *fc, struct page *page,
        return false;
 }
 
-static int fuse_writepages_fill(struct page *page,
+static int fuse_writepages_fill(struct folio *folio,
                struct writeback_control *wbc, void *_data)
 {
        struct fuse_fill_wb_data *data = _data;
@@ -2240,7 +2242,7 @@ static int fuse_writepages_fill(struct page *page,
                        goto out_unlock;
        }
 
-       if (wpa && fuse_writepage_need_send(fc, page, ap, data)) {
+       if (wpa && fuse_writepage_need_send(fc, &folio->page, ap, data)) {
                fuse_writepages_send(data);
                data->wpa = NULL;
        }
@@ -2275,7 +2277,7 @@ static int fuse_writepages_fill(struct page *page,
                data->max_pages = 1;
 
                ap = &wpa->ia.ap;
-               fuse_write_args_fill(&wpa->ia, data->ff, page_offset(page), 0);
+               fuse_write_args_fill(&wpa->ia, data->ff, folio_pos(folio), 0);
                wpa->ia.write.in.write_flags |= FUSE_WRITE_CACHE;
                wpa->next = NULL;
                ap->args.in_pages = true;
@@ -2283,13 +2285,13 @@ static int fuse_writepages_fill(struct page *page,
                ap->num_pages = 0;
                wpa->inode = inode;
        }
-       set_page_writeback(page);
+       folio_start_writeback(folio);
 
-       copy_highpage(tmp_page, page);
+       copy_highpage(tmp_page, &folio->page);
        ap->pages[ap->num_pages] = tmp_page;
        ap->descs[ap->num_pages].offset = 0;
        ap->descs[ap->num_pages].length = PAGE_SIZE;
-       data->orig_pages[ap->num_pages] = page;
+       data->orig_pages[ap->num_pages] = &folio->page;
 
        inc_wb_stat(&inode_to_bdi(inode)->wb, WB_WRITEBACK);
        inc_node_page_state(tmp_page, NR_WRITEBACK_TEMP);
@@ -2303,13 +2305,13 @@ static int fuse_writepages_fill(struct page *page,
                spin_lock(&fi->lock);
                ap->num_pages++;
                spin_unlock(&fi->lock);
-       } else if (fuse_writepage_add(wpa, page)) {
+       } else if (fuse_writepage_add(wpa, &folio->page)) {
                data->wpa = wpa;
        } else {
-               end_page_writeback(page);
+               folio_end_writeback(folio);
        }
 out_unlock:
-       unlock_page(page);
+       folio_unlock(folio);
 
        return err;
 }