Revision 7cf7eed103d3eea600146ea1853d15ee1f2f0456 authored by Linus Torvalds on 18 November 2021, 20:17:33 UTC, committed by Linus Torvalds on 18 November 2021, 20:17:33 UTC
Pull setattr idmapping fix from Christian Brauner:
 "This contains a simple fix for setattr. When determining the validity
  of the attributes the ia_{g,u}id fields contain the value that will be
  written to inode->i_{g,u}id. When the {g,u}id attribute of the file
  isn't altered and the caller's fs{g,u}id matches the current {g,u}id
  attribute the attribute change is allowed.

  The value in ia_{g,u}id does already account for idmapped mounts and
  will have taken the relevant idmapping into account. So in order to
  verify that the {g,u}id attribute isn't changed we simple need to
  compare the ia_{g,u}id value against the inode's i_{g,u}id value.

  This only has any meaning for idmapped mounts as idmapping helpers are
  idempotent without them. And for idmapped mounts this really only has
  a meaning when circular idmappings are used, i.e. mappings where e.g.
  id 1000 is mapped to id 1001 and id 1001 is mapped to id 1000. Such
  ciruclar mappings can e.g. be useful when sharing the same home
  directory between multiple users at the same time.

  Before this patch we could end up denying legitimate attribute changes
  and allowing invalid attribute changes when circular mappings are
  used. To even get into this situation the caller must've been
  privileged both to create that mapping and to create that idmapped
  mount.

  This hasn't been seen in the wild anywhere but came up when expanding
  the fstest suite during work on a series of hardening patches. All
  idmapped fstests pass without any regressions and we're adding new
  tests to verify the behavior of circular mappings.

  The new tests can be found at [1]"

Link: https://lore.kernel.org/linux-fsdevel/20211109145713.1868404-2-brauner@kernel.org [1]

* tag 'fs.idmapped.v5.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
  fs: handle circular mappings correctly
2 parent s a6a6d22 + 9682197
History
File Mode Size
842
crypto
dim
fonts
kunit
livepatch
lz4
lzo
math
mpi
pldmfw
raid6
reed_solomon
test_fortify
vdso
xz
zlib_deflate
zlib_dfltcc
zlib_inflate
zstd
.gitignore -rw-r--r-- 159 bytes
Kconfig -rw-r--r-- 16.1 KB
Kconfig.debug -rw-r--r-- 86.1 KB
Kconfig.kasan -rw-r--r-- 7.3 KB
Kconfig.kcsan -rw-r--r-- 9.5 KB
Kconfig.kfence -rw-r--r-- 3.2 KB
Kconfig.kgdb -rw-r--r-- 5.6 KB
Kconfig.ubsan -rw-r--r-- 6.3 KB
Makefile -rw-r--r-- 13.3 KB
argv_split.c -rw-r--r-- 2.1 KB
ashldi3.c -rw-r--r-- 541 bytes
ashrdi3.c -rw-r--r-- 565 bytes
asn1_decoder.c -rw-r--r-- 13.2 KB
asn1_encoder.c -rw-r--r-- 10.3 KB
assoc_array.c -rw-r--r-- 51.7 KB
atomic64.c -rw-r--r-- 4.6 KB
atomic64_test.c -rw-r--r-- 6.4 KB
audit.c -rw-r--r-- 1.9 KB
bcd.c -rw-r--r-- 297 bytes
bch.c -rw-r--r-- 38.3 KB
bitfield_kunit.c -rw-r--r-- 4.4 KB
bitmap.c -rw-r--r-- 44.9 KB
bitrev.c -rw-r--r-- 1.9 KB
bootconfig.c -rw-r--r-- 21.1 KB
bsearch.c -rw-r--r-- 1.2 KB
btree.c -rw-r--r-- 19.2 KB
bucket_locks.c -rw-r--r-- 1.4 KB
bug.c -rw-r--r-- 5.9 KB
build_OID_registry -rwxr-xr-x 4.5 KB
buildid.c -rw-r--r-- 5.0 KB
bust_spinlocks.c -rw-r--r-- 676 bytes
check_signature.c -rw-r--r-- 635 bytes
checksum.c -rw-r--r-- 4.1 KB
clz_ctz.c -rw-r--r-- 1.2 KB
clz_tab.c -rw-r--r-- 891 bytes
cmdline.c -rw-r--r-- 5.8 KB
cmdline_kunit.c -rw-r--r-- 4.2 KB
cmpdi2.c -rw-r--r-- 501 bytes
compat_audit.c -rw-r--r-- 1002 bytes
cpu_rmap.c -rw-r--r-- 7.6 KB
cpumask.c -rw-r--r-- 7.1 KB
crc-ccitt.c -rw-r--r-- 5.6 KB
crc-itu-t.c -rw-r--r-- 2.7 KB
crc-t10dif.c -rw-r--r-- 3.2 KB
crc16.c -rw-r--r-- 2.7 KB
crc32.c -rw-r--r-- 9.3 KB
crc32defs.h -rw-r--r-- 1.6 KB
crc32test.c -rw-r--r-- 37.4 KB
crc4.c -rw-r--r-- 1003 bytes
crc64.c -rw-r--r-- 1.8 KB
crc7.c -rw-r--r-- 2.5 KB
crc8.c -rw-r--r-- 2.4 KB
ctype.c -rw-r--r-- 1.4 KB
debug_info.c -rw-r--r-- 782 bytes
debug_locks.c -rw-r--r-- 1.2 KB
debugobjects.c -rw-r--r-- 35.4 KB
dec_and_lock.c -rw-r--r-- 1.2 KB
decompress.c -rw-r--r-- 1.8 KB
decompress_bunzip2.c -rw-r--r-- 23.5 KB
decompress_inflate.c -rw-r--r-- 4.8 KB
decompress_unlz4.c -rw-r--r-- 4.2 KB
decompress_unlzma.c -rw-r--r-- 15.8 KB
decompress_unlzo.c -rw-r--r-- 6.4 KB
decompress_unxz.c -rw-r--r-- 10.9 KB
decompress_unzstd.c -rw-r--r-- 10.2 KB
devmem_is_allowed.c -rw-r--r-- 683 bytes
devres.c -rw-r--r-- 14.9 KB
digsig.c -rw-r--r-- 5.5 KB
dump_stack.c -rw-r--r-- 3.0 KB
dynamic_debug.c -rw-r--r-- 27.9 KB
dynamic_queue_limits.c -rw-r--r-- 4.3 KB
earlycpio.c -rw-r--r-- 3.6 KB
errname.c -rw-r--r-- 3.7 KB
error-inject.c -rw-r--r-- 5.5 KB
errseq.c -rw-r--r-- 6.6 KB
extable.c -rw-r--r-- 2.9 KB
fault-inject-usercopy.c -rw-r--r-- 823 bytes
fault-inject.c -rw-r--r-- 5.9 KB
fdt.c -rw-r--r-- 69 bytes
fdt_addresses.c -rw-r--r-- 79 bytes
fdt_empty_tree.c -rw-r--r-- 80 bytes
fdt_ro.c -rw-r--r-- 72 bytes
fdt_rw.c -rw-r--r-- 72 bytes
fdt_strerror.c -rw-r--r-- 78 bytes
fdt_sw.c -rw-r--r-- 72 bytes
fdt_wip.c -rw-r--r-- 73 bytes
find_bit.c -rw-r--r-- 3.3 KB
find_bit_benchmark.c -rw-r--r-- 3.9 KB
flex_proportions.c -rw-r--r-- 7.2 KB
gen_crc32table.c -rw-r--r-- 3.3 KB
gen_crc64table.c -rw-r--r-- 1.4 KB
genalloc.c -rw-r--r-- 26.4 KB
generic-radix-tree.c -rw-r--r-- 5.3 KB
glob.c -rw-r--r-- 3.5 KB
globtest.c -rw-r--r-- 4.2 KB
hexdump.c -rw-r--r-- 7.4 KB
hweight.c -rw-r--r-- 1.9 KB
idr.c -rw-r--r-- 17.5 KB
inflate.c -rw-r--r-- 38.7 KB
interval_tree.c -rw-r--r-- 540 bytes
interval_tree_test.c -rw-r--r-- 3.4 KB
iomap.c -rw-r--r-- 9.1 KB
iomap_copy.c -rw-r--r-- 2.2 KB
iommu-helper.c -rw-r--r-- 755 bytes
iov_iter.c -rw-r--r-- 49.5 KB
irq_poll.c -rw-r--r-- 5.4 KB
irq_regs.c -rw-r--r-- 394 bytes
is_single_threaded.c -rw-r--r-- 1.2 KB
kasprintf.c -rw-r--r-- 1.4 KB
kfifo.c -rw-r--r-- 12.1 KB
klist.c -rw-r--r-- 10.4 KB
kobject.c -rw-r--r-- 28.2 KB
kobject_uevent.c -rw-r--r-- 18.9 KB
kstrtox.c -rw-r--r-- 10.7 KB
kstrtox.h -rw-r--r-- 411 bytes
libcrc32c.c -rw-r--r-- 2.0 KB
linear_ranges.c -rw-r--r-- 8.1 KB
list-test.c -rw-r--r-- 17.4 KB
list_debug.c -rw-r--r-- 1.8 KB
list_sort.c -rw-r--r-- 8.2 KB
llist.c -rw-r--r-- 2.5 KB
locking-selftest-hardirq.h -rw-r--r-- 246 bytes
locking-selftest-mutex.h -rw-r--r-- 159 bytes
locking-selftest-rlock-hardirq.h -rw-r--r-- 74 bytes
locking-selftest-rlock-softirq.h -rw-r--r-- 74 bytes
locking-selftest-rlock.h -rw-r--r-- 197 bytes
locking-selftest-rsem.h -rw-r--r-- 202 bytes
locking-selftest-rtmutex.h -rw-r--r-- 162 bytes
locking-selftest-softirq.h -rw-r--r-- 246 bytes
locking-selftest-spin-hardirq.h -rw-r--r-- 73 bytes
locking-selftest-spin-softirq.h -rw-r--r-- 73 bytes
locking-selftest-spin.h -rw-r--r-- 157 bytes
locking-selftest-wlock-hardirq.h -rw-r--r-- 74 bytes
locking-selftest-wlock-softirq.h -rw-r--r-- 74 bytes
locking-selftest-wlock.h -rw-r--r-- 197 bytes
locking-selftest-wsem.h -rw-r--r-- 202 bytes
locking-selftest.c -rw-r--r-- 63.7 KB
lockref.c -rw-r--r-- 4.5 KB
logic_iomem.c -rw-r--r-- 7.1 KB
logic_pio.c -rw-r--r-- 8.5 KB
lru_cache.c -rw-r--r-- 18.8 KB
lshrdi3.c -rw-r--r-- 559 bytes
memcat_p.c -rw-r--r-- 753 bytes
memcpy_kunit.c -rw-r--r-- 8.0 KB
memory-notifier-error-inject.c -rw-r--r-- 1.1 KB
memregion.c -rw-r--r-- 429 bytes
memweight.c -rw-r--r-- 1.0 KB
muldi3.c -rw-r--r-- 1.7 KB
net_utils.c -rw-r--r-- 640 bytes
netdev-notifier-error-inject.c -rw-r--r-- 1.5 KB
nlattr.c -rw-r--r-- 26.9 KB
nmi_backtrace.c -rw-r--r-- 3.3 KB
nodemask.c -rw-r--r-- 653 bytes
notifier-error-inject.c -rw-r--r-- 2.5 KB
notifier-error-inject.h -rw-r--r-- 653 bytes
objagg.c -rw-r--r-- 28.3 KB
of-reconfig-notifier-error-inject.c -rw-r--r-- 1.3 KB
oid_registry.c -rw-r--r-- 4.4 KB
once.c -rw-r--r-- 1.5 KB
packing.c -rw-r--r-- 6.5 KB
parman.c -rw-r--r-- 10.6 KB
parser.c -rw-r--r-- 8.9 KB
pci_iomap.c -rw-r--r-- 5.7 KB
percpu-refcount.c -rw-r--r-- 15.3 KB
percpu_counter.c -rw-r--r-- 6.4 KB
percpu_test.c -rw-r--r-- 3.2 KB
plist.c -rw-r--r-- 5.9 KB
pm-notifier-error-inject.c -rw-r--r-- 1.2 KB
radix-tree.c -rw-r--r-- 43.1 KB
random32.c -rw-r--r-- 18.5 KB
ratelimit.c -rw-r--r-- 1.6 KB
rbtree.c -rw-r--r-- 17.1 KB
rbtree_test.c -rw-r--r-- 9.4 KB
refcount.c -rw-r--r-- 4.8 KB
rhashtable.c -rw-r--r-- 29.5 KB
sbitmap.c -rw-r--r-- 18.6 KB
scatterlist.c -rw-r--r-- 28.1 KB
seq_buf.c -rw-r--r-- 10.0 KB
sg_pool.c -rw-r--r-- 4.2 KB
sg_split.c -rw-r--r-- 5.0 KB
sha1.c -rw-r--r-- 6.3 KB
show_mem.c -rw-r--r-- 1.1 KB
siphash.c -rw-r--r-- 11.9 KB
slub_kunit.c -rw-r--r-- 3.3 KB
smp_processor_id.c -rw-r--r-- 1.4 KB
sort.c -rw-r--r-- 8.4 KB
stackdepot.c -rw-r--r-- 11.8 KB
stmp_device.c -rw-r--r-- 1.9 KB
string.c -rw-r--r-- 21.0 KB
string_helpers.c -rw-r--r-- 21.3 KB
strncpy_from_user.c -rw-r--r-- 3.9 KB
strnlen_user.c -rw-r--r-- 3.3 KB
syscall.c -rw-r--r-- 2.7 KB
test-kstrtox.c -rw-r--r-- 17.3 KB
test-string_helpers.c -rw-r--r-- 14.9 KB
test_bitmap.c -rw-r--r-- 27.8 KB
test_bitops.c -rw-r--r-- 2.5 KB
test_bits.c -rw-r--r-- 1.8 KB
test_blackhole_dev.c -rw-r--r-- 2.5 KB
test_bpf.c -rw-r--r-- 348.8 KB
test_debug_virtual.c -rw-r--r-- 981 bytes
test_firmware.c -rw-r--r-- 27.7 KB
test_fpu.c -rw-r--r-- 2.0 KB
test_free_pages.c -rw-r--r-- 995 bytes
test_hash.c -rw-r--r-- 6.3 KB
test_hexdump.c -rw-r--r-- 6.3 KB
test_hmm.c -rw-r--r-- 29.3 KB
test_hmm_uapi.h -rw-r--r-- 2.4 KB
test_ida.c -rw-r--r-- 4.3 KB
test_kasan.c -rw-r--r-- 31.1 KB
test_kasan_module.c -rw-r--r-- 3.3 KB
test_kmod.c -rw-r--r-- 29.9 KB
test_kprobes.c -rw-r--r-- 9.4 KB
test_linear_ranges.c -rw-r--r-- 7.5 KB
test_list_sort.c -rw-r--r-- 3.3 KB
test_lockup.c -rw-r--r-- 16.3 KB
test_memcat_p.c -rw-r--r-- 2.2 KB
test_meminit.c -rw-r--r-- 9.7 KB
test_min_heap.c -rw-r--r-- 4.3 KB
test_module.c -rw-r--r-- 794 bytes
test_objagg.c -rw-r--r-- 24.6 KB
test_overflow.c -rw-r--r-- 22.3 KB
test_parman.c -rw-r--r-- 11.2 KB
test_printf.c -rw-r--r-- 18.7 KB
test_rhashtable.c -rw-r--r-- 20.0 KB
test_scanf.c -rw-r--r-- 28.9 KB
test_siphash.c -rw-r--r-- 7.5 KB
test_sort.c -rw-r--r-- 907 bytes
test_stackinit.c -rw-r--r-- 15.2 KB
test_static_key_base.c -rw-r--r-- 1.6 KB
test_static_keys.c -rw-r--r-- 5.6 KB
test_string.c -rw-r--r-- 3.9 KB
test_strscpy.c -rw-r--r-- 4.0 KB
test_sysctl.c -rw-r--r-- 3.9 KB
test_ubsan.c -rw-r--r-- 2.9 KB
test_user_copy.c -rw-r--r-- 9.1 KB
test_uuid.c -rw-r--r-- 3.4 KB
test_vmalloc.c -rw-r--r-- 10.9 KB
test_xarray.c -rw-r--r-- 46.8 KB
textsearch.c -rw-r--r-- 9.3 KB
timerqueue.c -rw-r--r-- 2.3 KB
ts_bm.c -rw-r--r-- 5.1 KB
ts_fsm.c -rw-r--r-- 10.4 KB
ts_kmp.c -rw-r--r-- 4.1 KB
ubsan.c -rw-r--r-- 10.0 KB
ubsan.h -rw-r--r-- 1.8 KB
ucmpdi2.c -rw-r--r-- 568 bytes
ucs2_string.c -rw-r--r-- 2.5 KB
usercopy.c -rw-r--r-- 2.2 KB
uuid.c -rw-r--r-- 2.9 KB
vsprintf.c -rw-r--r-- 87.2 KB
win_minmax.c -rw-r--r-- 3.4 KB
xarray.c -rw-r--r-- 58.5 KB
xxhash.c -rw-r--r-- 12.7 KB

back to top