aoe: handle highmem pages
Use kmap_atomic when copying out of a bio_vec. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>hifive-unleashed-5.1
parent
34ab96e6c5
commit
ad180f6f71
|
@ -388,7 +388,6 @@ aoeblk_gdalloc(void *vp)
|
||||||
d->aoemajor, d->aoeminor);
|
d->aoemajor, d->aoeminor);
|
||||||
goto err_mempool;
|
goto err_mempool;
|
||||||
}
|
}
|
||||||
blk_queue_bounce_limit(q, BLK_BOUNCE_HIGH);
|
|
||||||
|
|
||||||
spin_lock_irqsave(&d->lock, flags);
|
spin_lock_irqsave(&d->lock, flags);
|
||||||
WARN_ON(!(d->flags & DEVFL_GD_NOW));
|
WARN_ON(!(d->flags & DEVFL_GD_NOW));
|
||||||
|
|
|
@ -1032,8 +1032,9 @@ bvcpy(struct sk_buff *skb, struct bio *bio, struct bvec_iter iter, long cnt)
|
||||||
iter.bi_size = cnt;
|
iter.bi_size = cnt;
|
||||||
|
|
||||||
__bio_for_each_segment(bv, bio, iter, iter) {
|
__bio_for_each_segment(bv, bio, iter, iter) {
|
||||||
char *p = page_address(bv.bv_page) + bv.bv_offset;
|
char *p = kmap_atomic(bv.bv_page) + bv.bv_offset;
|
||||||
skb_copy_bits(skb, soff, p, bv.bv_len);
|
skb_copy_bits(skb, soff, p, bv.bv_len);
|
||||||
|
kunmap_atomic(p);
|
||||||
soff += bv.bv_len;
|
soff += bv.bv_len;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue