]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.4.181/chardev-add-additional-check-for-minor-range-overlap.patch
Linux 4.4.181
[thirdparty/kernel/stable-queue.git] / releases / 4.4.181 / chardev-add-additional-check-for-minor-range-overlap.patch
CommitLineData
1143c684
SL
1From 08c271e02d02ab497ace99b9f4fa7486836500a0 Mon Sep 17 00:00:00 2001
2From: Chengguang Xu <cgxu519@gmx.com>
3Date: Fri, 15 Feb 2019 20:27:11 +0800
4Subject: chardev: add additional check for minor range overlap
5
6[ Upstream commit de36e16d1557a0b6eb328bc3516359a12ba5c25c ]
7
8Current overlap checking cannot correctly handle
9a case which is baseminor < existing baseminor &&
10baseminor + minorct > existing baseminor + minorct.
11
12Signed-off-by: Chengguang Xu <cgxu519@gmx.com>
13Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
14Signed-off-by: Sasha Levin <sashal@kernel.org>
15---
16 fs/char_dev.c | 6 ++++++
17 1 file changed, 6 insertions(+)
18
19diff --git a/fs/char_dev.c b/fs/char_dev.c
20index 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--
372.20.1
38