bio->bi_end_io = bio_map_kern_endio; 
static struct bio *__bio_map_kern(request_queue_t *q, void *data,				  unsigned int len, unsigned int gfp_mask){	unsigned long kaddr = (unsigned long)data;	unsigned long end = (kaddr + len + PAGE_SIZE - 1) >> PAGE_SHIFT;	unsigned long start = kaddr >> PAGE_SHIFT;	const int nr_pages = end - start;	int offset, i;	struct bio *bio;	bio = bio_alloc(gfp_mask, nr_pages);	if (!bio)		return ERR_PTR(-ENOMEM);	offset = offset_in_page(kaddr);	for (i = 0; i < nr_pages; i++) {		unsigned int bytes = PAGE_SIZE - offset;		if (len <= 0)			break;		if (bytes > len)			bytes = len;		if (__bio_add_page(q, bio, virt_to_page(data), bytes,				   offset) < bytes)			break;		data += bytes;		len -= bytes;		offset = 0;	}	return bio;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b823825e8e09aac6dc1ca362cd5639a87329d636/bio.c/buggy/fs/bio.c