kernel_samsung_a53x/mm
Zach O'Keefe 3c005586fd mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again
commit 9319b647902cbd5cc884ac08a8a6d54ce111fc78 upstream.

(struct dirty_throttle_control *)->thresh is an unsigned long, but is
passed as the u32 divisor argument to div_u64().  On architectures where
unsigned long is 64 bytes, the argument will be implicitly truncated.

Use div64_u64() instead of div_u64() so that the value used in the "is
this a safe division" check is the same as the divisor.

Also, remove redundant cast of the numerator to u64, as that should happen
implicitly.

This would be difficult to exploit in memcg domain, given the ratio-based
arithmetic domain_drity_limits() uses, but is much easier in global
writeback domain with a BDI_CAP_STRICTLIMIT-backing device, using e.g.
vm.dirty_bytes=(1<<32)*PAGE_SIZE so that dtc->thresh == (1<<32)

Link: https://lkml.kernel.org/r/20240118181954.1415197-1-zokeefe@google.com
Fixes: f6789593d5ce ("mm/page-writeback.c: fix divide by zero in bdi_dirty_limits()")
Signed-off-by: Zach O'Keefe <zokeefe@google.com>
Cc: Maxim Patlasov <MPatlasov@parallels.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-11-18 12:13:28 +01:00
..
damon Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kasan Revert "kasan: print the original fault addr when access invalid shadow" 2024-11-18 11:06:01 +01:00
kfence Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sec_mm Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
backing-dev.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
balloon_compaction.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cleancache.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cma.c mm/cma: use nth_page() in place of direct struct page manipulation 2024-11-18 11:43:25 +01:00
cma.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cma_debug.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cma_sysfs.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
compaction.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
debug.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
debug_page_ref.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
debug_vm_pgtable.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dmapool.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
early_ioremap.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
fadvise.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
failslab.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
filemap.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
frame_vector.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
frontswap.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gup.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gup_benchmark.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
highmem.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hmm.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hpa.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
huge_memory.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hugetlb.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hugetlb_cgroup.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hwpoison-inject.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
init-mm.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
internal.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
interval_tree.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
io_record.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ioremap.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig.debug Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
khugepaged.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kmemleak.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ksm.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kzerod.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
list_lru.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
maccess.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
madvise.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mapping_dirty_helpers.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
memblock.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
memcontrol.c mm: kmem: drop __GFP_NOFAIL when allocating objcg vectors 2024-11-18 11:43:31 +01:00
memfd.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
memory-failure.c mm/memory-failure: check the mapcount of the precise page 2024-11-18 12:12:08 +01:00
memory.c mm: fix unmap_mapping_range high bits shift bug 2024-11-18 12:12:08 +01:00
memory_hotplug.c mm/memory_hotplug: use pfn math in place of direct struct page manipulation 2024-11-18 11:43:25 +01:00
mempolicy.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mempool.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
memremap.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
memtest.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
migrate.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mincore.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mlock.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mm_init.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mmap.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mmu_gather.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mmu_notifier.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mmzone.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mprotect.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mremap.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
msync.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nommu.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
oom_kill.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
page-writeback.c mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again 2024-11-18 12:13:28 +01:00
page_alloc.c mm/page_alloc: correct start page when guard page debug is enabled 2024-11-18 10:58:28 +01:00
page_counter.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
page_ext.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
page_idle.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
page_io.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
page_isolation.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
page_owner.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
page_pinner.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
page_poison.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
page_reporting.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
page_reporting.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
page_vma_mapped.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pagewalk.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
percpu-internal.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
percpu-km.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
percpu-stats.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
percpu-vm.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
percpu.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pgalloc-track.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pgtable-generic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
process_vm_access.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ptdump.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
readahead.c vfs: fix readahead(2) on block devices 2024-11-18 11:42:46 +01:00
rmap.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
rodata_test.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
shmem.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
shuffle.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
shuffle.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
slab.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
slab.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
slab_common.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
slob.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
slub.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sparse-vmemmap.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sparse.c mm/sparsemem: fix race in accessing memory_section->usage 2024-11-18 12:13:06 +01:00
swap.c mm: swap - set page_cluster at 0 2024-11-17 17:37:44 +01:00
swap_cgroup.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
swap_slots.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
swap_state.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
swapfile.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
truncate.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
usercopy.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
userfaultfd.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
util.c mm: vmalloc: introduce array allocation functions 2024-11-18 12:12:59 +01:00
vmacache.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vmalloc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vmpressure.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vmscan.c Disable vmscan warning print 2024-11-17 17:42:47 +01:00
vmstat.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
workingset.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
z3fold.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
zbud.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
zpool.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
zsmalloc.c zsmalloc: use copy_page for full page copy 2024-11-17 17:41:35 +01:00
zswap.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00