Pull fuse updates from Miklos Szeredi: - Fix a page locking bug in write (introduced in 2.6.26) - Allow sgid bit to be killed in setacl() - Miscellaneous fixes and cleanups * tag 'fuse-update-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse: cuse: simplify refcount cuse: prevent clone virtiofs: fix userns virtiofs: remove useless function virtiofs: split requests that exceed virtqueue size virtiofs: fix memory leak in virtio_fs_probe() fuse: invalidate attrs when page writeback completes fuse: add a flag FUSE_SETXATTR_ACL_KILL_SGID to kill SGID fuse: extend FUSE_SETXATTR request fuse: fix matching of FUSE_DEV_IOC_CLONE command fuse: fix a typo fuse: don't zero pages twice fuse: fix typo for fuse_conn.max_pages comment fuse: fix write deadlock
Showing the changes to include/uapi/linux (1 of 9 files). Show all
Unified · Split
| @@ -179,6 +179,8 @@ · 178 unmodified lines | |||
| 179 | * 7.33 | 179 | * 7.33 |
| 180 | * - add FUSE_HANDLE_KILLPRIV_V2, FUSE_WRITE_KILL_SUIDGID, FATTR_KILL_SUIDGID | 180 | * - add FUSE_HANDLE_KILLPRIV_V2, FUSE_WRITE_KILL_SUIDGID, FATTR_KILL_SUIDGID |
| 181 | * - add FUSE_OPEN_KILL_SUIDGID | 181 | * - add FUSE_OPEN_KILL_SUIDGID |
| 182 | * - extend fuse_setxattr_in, add FUSE_SETXATTR_EXT | ||
| 183 | * - add FUSE_SETXATTR_ACL_KILL_SGID | ||
| 182 | */ | 184 | */ |
| 183 | 185 | ||
| 184 | #ifndef _LINUX_FUSE_H | 186 | #ifndef _LINUX_FUSE_H |
| @@ -330,6 +332,7 @@ struct fuse_file_lock { · 145 unmodified lines | |||
| 330 | * does not have CAP_FSETID. Additionally upon | 332 | * does not have CAP_FSETID. Additionally upon |
| 331 | * write/truncate sgid is killed only if file has group | 333 | * write/truncate sgid is killed only if file has group |
| 332 | * execute permission. (Same as Linux VFS behavior). | 334 | * execute permission. (Same as Linux VFS behavior). |
| 335 | * FUSE_SETXATTR_EXT: Server supports extended struct fuse_setxattr_in | ||
| 333 | */ | 336 | */ |
| 334 | #define FUSE_ASYNC_READ (1 << 0) | 337 | #define FUSE_ASYNC_READ (1 << 0) |
| 335 | #define FUSE_POSIX_LOCKS (1 << 1) | 338 | #define FUSE_POSIX_LOCKS (1 << 1) |
| @@ -360,6 +363,7 @@ struct fuse_file_lock { · 24 unmodified lines | |||
| 360 | #define FUSE_MAP_ALIGNMENT (1 << 26) | 363 | #define FUSE_MAP_ALIGNMENT (1 << 26) |
| 361 | #define FUSE_SUBMOUNTS (1 << 27) | 364 | #define FUSE_SUBMOUNTS (1 << 27) |
| 362 | #define FUSE_HANDLE_KILLPRIV_V2 (1 << 28) | 365 | #define FUSE_HANDLE_KILLPRIV_V2 (1 << 28) |
| 366 | #define FUSE_SETXATTR_EXT (1 << 29) | ||
| 363 | 367 | ||
| 364 | /** | 368 | /** |
| 365 | * CUSE INIT request/reply flags | 369 | * CUSE INIT request/reply flags |
| @@ -451,6 +455,12 @@ struct fuse_file_lock { · 85 unmodified lines | |||
| 451 | */ | 455 | */ |
| 452 | #define FUSE_OPEN_KILL_SUIDGID (1 << 0) | 456 | #define FUSE_OPEN_KILL_SUIDGID (1 << 0) |
| 453 | 457 | ||
| 458 | /** | ||
| 459 | * setxattr flags | ||
| 460 | * FUSE_SETXATTR_ACL_KILL_SGID: Clear SGID when system.posix_acl_access is set | ||
| 461 | */ | ||
| 462 | #define FUSE_SETXATTR_ACL_KILL_SGID (1 << 0) | ||
| 463 | |||
| 454 | enum fuse_opcode { | 464 | enum fuse_opcode { |
| 455 | FUSE_LOOKUP = 1, | 465 | FUSE_LOOKUP = 1, |
| 456 | FUSE_FORGET = 2, /* no reply */ | 466 | FUSE_FORGET = 2, /* no reply */ |
| @@ -681,9 +691,13 @@ struct fuse_fsync_in { · 224 unmodified lines | |||
| 681 | uint32_t padding; | 691 | uint32_t padding; |
| 682 | }; | 692 | }; |
| 683 | 693 | ||
| 694 | #define FUSE_COMPAT_SETXATTR_IN_SIZE 8 | ||
| 695 | |||
| 684 | struct fuse_setxattr_in { | 696 | struct fuse_setxattr_in { |
| 685 | uint32_t size; | 697 | uint32_t size; |
| 686 | uint32_t flags; | 698 | uint32_t flags; |
| 699 | uint32_t setxattr_flags; | ||
| 700 | uint32_t padding; | ||
| 687 | }; | 701 | }; |
| 688 | 702 | ||
| 689 | struct fuse_getxattr_in { | 703 | struct fuse_getxattr_in { |