]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-4.4/chardev-add-additional-check-for-minor-range-overlap.patch
Linux 4.9.181
[thirdparty/kernel/stable-queue.git] / queue-4.4 / chardev-add-additional-check-for-minor-range-overlap.patch
1 From 08c271e02d02ab497ace99b9f4fa7486836500a0 Mon Sep 17 00:00:00 2001
2 From: Chengguang Xu <cgxu519@gmx.com>
3 Date: Fri, 15 Feb 2019 20:27:11 +0800
4 Subject: chardev: add additional check for minor range overlap
5
6 [ Upstream commit de36e16d1557a0b6eb328bc3516359a12ba5c25c ]
7
8 Current overlap checking cannot correctly handle
9 a case which is baseminor < existing baseminor &&
10 baseminor + minorct > existing baseminor + minorct.
11
12 Signed-off-by: Chengguang Xu <cgxu519@gmx.com>
13 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14 Signed-off-by: Sasha Levin <sashal@kernel.org>
15 ---
16 fs/char_dev.c | 6 ++++++
17 1 file changed, 6 insertions(+)
18
19 diff --git a/fs/char_dev.c b/fs/char_dev.c
20 index 24b142569ca9b..d0655ca894816 100644
21 --- a/fs/char_dev.c
22 +++ b/fs/char_dev.c
23 @@ -130,6 +130,12 @@ __register_chrdev_region(unsigned int major, unsigned int baseminor,
24 ret = -EBUSY;
25 goto out;
26 }
27 +
28 + if (new_min < old_min && new_max > old_max) {
29 + ret = -EBUSY;
30 + goto out;
31 + }
32 +
33 }
34
35 cd->next = *cp;
36 --
37 2.20.1
38