No description
  • C 96.9%
  • Assembly 0.9%
  • Rust 0.6%
  • Shell 0.6%
  • Python 0.5%
  • Other 0.3%
Find a file
Jiri Slaby e8f1d2fd81 Revert "zram: remove double compression logic"
commit 37887783b3 upstream.

This reverts commit e7be8d1dd9 ("zram: remove double compression
logic") as it causes zram failures.  It does not revert cleanly, PTR_ERR
handling was introduced in the meantime.  This is handled by appropriate
IS_ERR.

When under memory pressure, zs_malloc() can fail.  Before the above
commit, the allocation was retried with direct reclaim enabled (GFP_NOIO).
After the commit, it is not -- only __GFP_KSWAPD_RECLAIM is tried.

So when the failure occurs under memory pressure, the overlaying
filesystem such as ext2 (mounted by ext4 module in this case) can emit
failures, making the (file)system unusable:
  EXT4-fs warning (device zram0): ext4_end_bio:343: I/O error 10 writing to inode 16386 starting block 159744)
  Buffer I/O error on device zram0, logical block 159744

With direct reclaim, memory is really reclaimed and allocation succeeds,
eventually.  In the worst case, the oom killer is invoked, which is proper
outcome if user sets up zram too large (in comparison to available RAM).

This very diff doesn't apply to 5.19 (stable) cleanly (see PTR_ERR note
above). Use revert of e7be8d1dd9 directly.

Link: https://bugzilla.suse.com/show_bug.cgi?id=1202203
Link: https://lkml.kernel.org/r/20220810070609.14402-1-jslaby@suse.cz
Fixes: e7be8d1dd9 ("zram: remove double compression logic")
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Nitin Gupta <ngupta@vflare.org>
Cc: Alexey Romanov <avromanov@sberdevices.ru>
Cc: Dmitry Rokosov <ddrokosov@sberdevices.ru>
Cc: Lukas Czerner <lczerner@redhat.com>
Cc: <stable@vger.kernel.org>	[5.19]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2022-08-31 17:18:17 +02:00
arch riscv: dts: microchip: correct L2 cache interrupts 2022-08-31 17:18:17 +02:00
block blk-mq: run queue no matter whether the request is the last request 2022-08-25 11:45:36 +02:00
certs certs: make system keyring depend on x509 parser 2022-07-24 12:53:55 -07:00
crypto KEYS: asymmetric: enforce SM2 signature use pkey algo 2022-08-17 15:16:17 +02:00
Documentation x86/bugs: Add "unknown" reporting for MMIO Stale Data 2022-08-31 17:18:14 +02:00
drivers Revert "zram: remove double compression logic" 2022-08-31 17:18:17 +02:00
fs ocfs2: fix freeing uninitialized resource on ocfs2_dlm_shutdown 2022-08-31 17:18:16 +02:00
include Revert "memcg: cleanup racy sum avoidance code" 2022-08-31 17:18:16 +02:00
init stack: Declare {randomize_,}kstack_offset to fix Sparse warnings 2022-08-17 15:14:14 +02:00
io_uring io_uring: mem-account pbuf buckets 2022-08-17 15:16:21 +02:00
ipc ipc: Free mq_sysctls if ipc namespace creation failed 2022-06-22 17:47:41 -05:00
kernel audit: move audit_return_fixup before the filters 2022-08-31 17:18:14 +02:00
lib ratelimit: Fix data-races in ___ratelimit(). 2022-08-31 17:18:08 +02:00
LICENSES LICENSES/LGPL-2.1: Add LGPL-2.1-or-later as valid identifiers 2021-12-16 14:33:10 +01:00
mm shmem: update folio if shmem_replace_page() updates the page 2022-08-31 17:18:16 +02:00
net rxrpc: Fix locking in rxrpc's sendmsg 2022-08-31 17:18:11 +02:00
samples sample: bpf: xdp_router_ipv4: Allow the kernel to send arp requests 2022-08-17 15:14:25 +02:00
scripts kbuild: dummy-tools: avoid tmpdir leak in dummy gcc 2022-08-29 11:07:58 +02:00
security apparmor: Fix memleak in aa_simple_write_to_buffer() 2022-08-25 11:45:11 +02:00
sound Revert "ALSA: hda: Fix page fault in snd_hda_codec_shutdown()" 2022-08-25 11:45:54 +02:00
tools selftests/kprobe: Do not test for GRP/ without event failures 2022-08-25 11:45:46 +02:00
usr Not a lot of material this cycle. Many singleton patches against various 2022-05-27 11:22:03 -07:00
virt KVM: Unconditionally get a ref to /dev/kvm module when creating a VM 2022-08-25 11:45:05 +02:00
.clang-format clang-format: Fix space after for_each macros 2022-05-20 19:27:16 +02:00
.cocciconfig scripts: add Linux .cocciconfig for coccinelle 2016-07-22 12:13:39 +02:00
.get_maintainer.ignore Opt out of scripts/get_maintainer.pl 2019-05-16 10:53:40 -07:00
.gitattributes .gitattributes: use 'dts' diff driver for dts files 2019-12-04 19:44:11 -08:00
.gitignore kbuild: split the second line of *.mod into *.usyms 2022-05-08 03:16:59 +09:00
.mailmap ARM: SoC fixes for 5.19, part 4 2022-07-27 09:43:07 -07:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS MAINTAINERS: mark ARM/PALM TREO SUPPORT orphan 2022-07-07 15:17:00 +02:00
Kbuild kbuild: rename hostprogs-y/always to hostprogs/always-y 2020-02-04 01:53:07 +09:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS io_uring: move to separate directory 2022-08-17 15:14:20 +02:00
Makefile Linux 5.19.5 2022-08-29 11:18:05 +02:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.