From: Chengguang Xu Date: Fri, 15 Feb 2019 12:27:11 +0000 (+0800) Subject: chardev: add additional check for minor range overlap X-Git-Tag: v4.4.181~84 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cb7872f128359b7ef982780703411eb2a68a2390;p=thirdparty%2Fkernel%2Fstable.git chardev: add additional check for minor range overlap [ Upstream commit de36e16d1557a0b6eb328bc3516359a12ba5c25c ] Current overlap checking cannot correctly handle a case which is baseminor < existing baseminor && baseminor + minorct > existing baseminor + minorct. Signed-off-by: Chengguang Xu Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- diff --git a/fs/char_dev.c b/fs/char_dev.c index 24b142569ca9b..d0655ca894816 100644 --- a/fs/char_dev.c +++ b/fs/char_dev.c @@ -130,6 +130,12 @@ __register_chrdev_region(unsigned int major, unsigned int baseminor, ret = -EBUSY; goto out; } + + if (new_min < old_min && new_max > old_max) { + ret = -EBUSY; + goto out; + } + } cd->next = *cp;