diff options
author | Christoph Hellwig <hch@lst.de> | 2017-08-23 19:10:29 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2017-08-23 12:49:50 -0600 |
commit | de65b0123216a8e1dbe3ca1eb20a45572b9e71d9 (patch) | |
tree | f1c0278d6d8e18f22b42829b81e058def7ce69bc /block | |
parent | 10433d04b8e647a50feffec72fd3cf40ce42b084 (diff) | |
download | lwn-de65b0123216a8e1dbe3ca1eb20a45572b9e71d9.tar.gz lwn-de65b0123216a8e1dbe3ca1eb20a45572b9e71d9.zip |
block: reject attempts to allocate more than DISK_MAX_PARTS partitions
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block')
-rw-r--r-- | block/genhd.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/block/genhd.c b/block/genhd.c index 2367087cdb7c..3380a1e73ea0 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -1357,6 +1357,13 @@ struct gendisk *alloc_disk_node(int minors, int node_id) struct gendisk *disk; struct disk_part_tbl *ptbl; + if (minors > DISK_MAX_PARTS) { + printk(KERN_ERR + "block: can't allocated more than %d partitions\n", + DISK_MAX_PARTS); + minors = DISK_MAX_PARTS; + } + disk = kzalloc_node(sizeof(struct gendisk), GFP_KERNEL, node_id); if (disk) { if (!init_part_stats(&disk->part0)) { |