Go to file
Tejun Heo 813e693023 blk-iolatency: Fix memory leak on add_disk() failures
When a gendisk is successfully initialized but add_disk() fails such as when
a loop device has invalid number of minor device numbers specified,
blkcg_init_disk() is called during init and then blkcg_exit_disk() during
error handling. Unfortunately, iolatency gets initialized in the former but
doesn't get cleaned up in the latter.

This is because, in non-error cases, the cleanup is performed by
del_gendisk() calling rq_qos_exit(), the assumption being that rq_qos
policies, iolatency being one of them, can only be activated once the disk
is fully registered and visible. That assumption is true for wbt and iocost,
but not so for iolatency as it gets initialized before add_disk() is called.

It is desirable to lazy-init rq_qos policies because they are optional
features and add to hot path overhead once initialized - each IO has to walk
all the registered rq_qos policies. So, we want to switch iolatency to lazy
init too. However, that's a bigger change. As a fix for the immediate
problem, let's just add an extra call to rq_qos_exit() in blkcg_exit_disk().
This is safe because duplicate calls to rq_qos_exit() become noop's.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: darklight2357@icloud.com
Cc: Josef Bacik <josef@toxicpanda.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Fixes: d706751215 ("block: introduce blk-iolatency io controller")
Cc: stable@vger.kernel.org # v4.19+
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/Y5TQ5gm3O4HXrXR3@slm.duckdns.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-12-14 12:42:55 -07:00
Documentation MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
LICENSES LICENSES/LGPL-2.1: Add LGPL-2.1-or-later as valid identifiers 2021-12-16 14:33:10 +01:00
arch MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
block blk-iolatency: Fix memory leak on add_disk() failures 2022-12-14 12:42:55 -07:00
certs certs: make system keyring depend on built-in x509 parser 2022-09-24 04:31:18 +09:00
crypto iov_iter work; most of that is about getting rid of 2022-12-12 18:29:54 -08:00
drivers loop: Fix the max_loop commandline argument treatment when it is set to 0 2022-12-14 10:55:20 -07:00
fs MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
include MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
init modules changes for v6.2-rc1 2022-12-13 14:05:39 -08:00
io_uring for-6.2/block-2022-12-08 2022-12-13 10:43:59 -08:00
ipc Non-MM patches for 6.2-rc1. 2022-12-12 17:28:58 -08:00
kernel MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
lib MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
mm MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
net Networking changes for 6.2. 2022-12-13 15:47:48 -08:00
rust rust: types: add `Opaque` type 2022-12-04 01:59:16 +01:00
samples Networking changes for 6.2. 2022-12-13 15:47:48 -08:00
scripts Networking changes for 6.2. 2022-12-13 15:47:48 -08:00
security integrity-v6.2 2022-12-13 14:22:50 -08:00
sound sound updates for 6.2-rc1 2022-12-13 11:27:26 -08:00
tools MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
usr usr/gen_init_cpio.c: remove unnecessary -1 values from int file 2022-10-03 14:21:44 -07:00
virt Merge branch 'kvm-dwmw2-fixes' into HEAD 2022-11-23 18:59:45 -05:00
.clang-format printk changes for 6.2 2022-12-12 09:01:36 -08:00
.cocciconfig scripts: add Linux .cocciconfig for coccinelle 2016-07-22 12:13:39 +02:00
.get_maintainer.ignore get_maintainer: add Alan to .get_maintainer.ignore 2022-08-20 15:17:44 -07:00
.gitattributes .gitattributes: use 'dts' diff driver for dts files 2019-12-04 19:44:11 -08:00
.gitignore kbuild: Cleanup DT Overlay intermediate files as appropriate 2022-11-18 14:45:30 -06:00
.mailmap Non-MM patches for 6.2-rc1. 2022-12-12 17:28:58 -08:00
.rustfmt.toml rust: add `.rustfmt.toml` 2022-09-28 09:02:20 +02:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS MAINTAINERS: Remove Michal Marek from Kbuild maintainers 2022-11-16 14:53:00 +09:00
Kbuild Kbuild updates for v6.1 2022-10-10 12:00:45 -07:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
Makefile This was a not-too-busy cycle for documentation; highlights include: 2022-12-12 17:18:50 -08:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00

README

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.