diff -urNp 2.4.19pre9ac2/drivers/block/loop.c 2.4.19pre9ac3/drivers/block/loop.c --- 2.4.19pre9ac2/drivers/block/loop.c Thu May 30 18:07:48 2002 +++ 2.4.19pre9ac3/drivers/block/loop.c Fri May 31 02:10:02 2002 @@ -199,9 +199,9 @@ static int lo_send(struct loop_device *l page = grab_cache_page(mapping, index); if (!page) goto fail; + kaddr = kmap(page); if (aops->prepare_write(file, page, offset, offset+size)) goto unlock; - kaddr = page_address(page); flush_dcache_page(page); transfer_result = lo_do_transfer(lo, WRITE, kaddr + offset, data, size, IV); if (transfer_result) { @@ -216,6 +216,7 @@ static int lo_send(struct loop_device *l goto unlock; if (transfer_result) goto unlock; + kunmap(page); data += size; len -= size; offset = 0; @@ -228,6 +229,7 @@ static int lo_send(struct loop_device *l return 0; unlock: + kunmap(page); UnlockPage(page); page_cache_release(page); fail: