mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 04:31:50 +00:00
don't rely upon subsequent bio_add_pc_page() calls failing
... they might actually succeed in some cases (when we are at the queue-imposed segments limit, the next page is not mergable with the last one we'd got in, but the first page covered by the next iovec *is* mergable). Make sure that once it's failed, we are done with that bio. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
629e42bcc3
commit
e2e115d18b
@ -1380,10 +1380,7 @@ struct bio *bio_map_user_iov(struct request_queue *q,
|
||||
if (n > bytes)
|
||||
n = bytes;
|
||||
|
||||
/*
|
||||
* sorry...
|
||||
*/
|
||||
if (bio_add_pc_page(q, bio, pages[j], n, offs) < n)
|
||||
if (!bio_add_pc_page(q, bio, pages[j], n, offs))
|
||||
break;
|
||||
|
||||
/*
|
||||
@ -1405,6 +1402,9 @@ struct bio *bio_map_user_iov(struct request_queue *q,
|
||||
while (j < npages)
|
||||
put_page(pages[j++]);
|
||||
kvfree(pages);
|
||||
/* couldn't stuff something into bio? */
|
||||
if (bytes)
|
||||
break;
|
||||
}
|
||||
|
||||
bio_set_flag(bio, BIO_USER_MAPPED);
|
||||
|
Loading…
Reference in New Issue
Block a user