[linux-lvm] Function clone_bio

Sumit Narayan sumnaray at gmail.com
Wed Nov 28 15:25:57 UTC 2007

static struct bio *clone_bio(struct bio *bio, sector_t sector,
              unsigned short idx, unsigned short bv_count,
              unsigned int len, struct bio_set *bs)
   struct bio *clone;

   clone = bio_alloc_bioset(GFP_NOIO, bio->bi_max_vecs, bs);
   __bio_clone(clone, bio);
   clone->bi_destructor = dm_bio_destructor;
   clone->bi_sector = sector;
   clone->bi_idx = idx;
   clone->bi_vcnt = idx + bv_count;
   clone->bi_size = to_bytes(len);
   clone->bi_flags &= ~(1 << BIO_SEG_VALID);

   return clone;

There is a possibility of NULL being returned from bio_alloc_bioset. 
Although unlikely, it could crash the kernel.

If required, I have attached a patch (created on linux-

-------------- next part --------------
A non-text attachment was scrubbed...
Name: dm-dm_c-fix.patch
Type: text/x-patch
Size: 512 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/linux-lvm/attachments/20071128/6c9e402d/attachment.bin>

More information about the linux-lvm mailing list