From 1a07e84d0381f46de01d03c55648288294f95e56 Mon Sep 17 00:00:00 2001 From: Jerome Duval Date: Mon, 16 Sep 2013 13:27:42 +0200 Subject: [PATCH] usb_disk: fixed mounting a USB disk on x86_64 * usb_disk_prepare_partial_buffer() was miscalculating the offset in the temp buffer, which led to a page fault later when copying to the user buffer. --- src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp b/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp index d270798965..ff03f98071 100644 --- a/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp +++ b/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp @@ -963,7 +963,7 @@ usb_disk_prepare_partial_buffer(device_lun *lun, off_t position, size_t length, return result; } - off_t offset = position - (blockPosition * lun->block_size); + off_t offset = position - (off_t)blockPosition * lun->block_size; partialBuffer = (uint8 *)blockBuffer + offset; return B_OK; }