Message ID | 20190405112711.25275-1-cgxu519@gmx.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3,1/4] chardev: add additional check for minor range overlap | expand |
On Fri, Apr 05, 2019 at 07:27:08PM +0800, Chengguang Xu wrote: > Current overlap checking cannot correctly handle > a case which is baseminor < existing baseminor && > baseminor + minorct > existing baseminor + minorct. > > Signed-off-by: Chengguang Xu <cgxu519@gmx.com> > --- > v1->v2: > - Split fix and cleanup patches. > - Remove printing minor range in chrdev_show(). What is the difference for v3? And didn't I already take v2 of this series? thanks, greg k-h
diff --git a/fs/char_dev.c b/fs/char_dev.c index a279c58fe360..8a63cfa29005 100644 --- a/fs/char_dev.c +++ b/fs/char_dev.c @@ -159,6 +159,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;
Current overlap checking cannot correctly handle a case which is baseminor < existing baseminor && baseminor + minorct > existing baseminor + minorct. Signed-off-by: Chengguang Xu <cgxu519@gmx.com> --- v1->v2: - Split fix and cleanup patches. - Remove printing minor range in chrdev_show(). fs/char_dev.c | 6 ++++++ 1 file changed, 6 insertions(+) -- 2.20.1