Commit 43bfec2f authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Li Nan
Browse files

block: turn the nr_iovecs argument to bio_alloc* into an unsigned short

mainline inclusion
from mainline-v5.12-rc1
commit 0f2e6ab8
bugzilla: https://gitee.com/openeuler/kernel/issues/IB7FJU

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0f2e6ab851ae146c468bc5151c302c6e2473f70a



--------------------------------

The bi_max_vecs and bi_vcnt fields are defined as unsigned short, so
don't allow passing larger values in.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>

Conflicts:
  block/bio.c
  include/linux/bio.h
[Commit 3175199a ("block: split bio_kmalloc from bio_alloc_bioset")
change the comment of bio_alloc_bioset and move bio_kmalloc from
include/linux/bio.h to block/bio.c]
Signed-off-by: default avatarLi Lingfeng <lilingfeng3@huawei.com>
Signed-off-by: default avatarLi Nan <linan122@huawei.com>
parent a87ee0d3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -419,7 +419,7 @@ static void punt_bios_to_rescuer(struct bio_set *bs)
 *   RETURNS:
 *   Pointer to new bio on success, NULL on failure.
 */
struct bio *bio_alloc_bioset(gfp_t gfp_mask, unsigned int nr_iovecs,
struct bio *bio_alloc_bioset(gfp_t gfp_mask, unsigned short nr_iovecs,
			     struct bio_set *bs)
{
	gfp_t saved_gfp = gfp_mask;
+3 −3
Original line number Diff line number Diff line
@@ -394,7 +394,7 @@ extern void bioset_exit(struct bio_set *);
extern int biovec_init_pool(mempool_t *pool, int pool_entries);
extern int bioset_init_from_src(struct bio_set *bs, struct bio_set *src);

extern struct bio *bio_alloc_bioset(gfp_t, unsigned int, struct bio_set *);
extern struct bio *bio_alloc_bioset(gfp_t, unsigned short, struct bio_set *);
extern void bio_put(struct bio *);

extern void __bio_clone_fast(struct bio *, struct bio *);
@@ -402,12 +402,12 @@ extern struct bio *bio_clone_fast(struct bio *, gfp_t, struct bio_set *);

extern struct bio_set fs_bio_set;

static inline struct bio *bio_alloc(gfp_t gfp_mask, unsigned int nr_iovecs)
static inline struct bio *bio_alloc(gfp_t gfp_mask, unsigned short nr_iovecs)
{
	return bio_alloc_bioset(gfp_mask, nr_iovecs, &fs_bio_set);
}

static inline struct bio *bio_kmalloc(gfp_t gfp_mask, unsigned int nr_iovecs)
static inline struct bio *bio_kmalloc(gfp_t gfp_mask, unsigned short nr_iovecs)
{
	return bio_alloc_bioset(gfp_mask, nr_iovecs, NULL);
}