aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/brd.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/block/brd.c')
-rw-r--r--drivers/block/brd.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/block/brd.c b/drivers/block/brd.c
index 3598110d2cef..89e90ec52f28 100644
--- a/drivers/block/brd.c
+++ b/drivers/block/brd.c
@@ -370,25 +370,25 @@ static int brd_rw_page(struct block_device *bdev, sector_t sector,
370} 370}
371 371
372#ifdef CONFIG_BLK_DEV_XIP 372#ifdef CONFIG_BLK_DEV_XIP
373static int brd_direct_access(struct block_device *bdev, sector_t sector, 373static long brd_direct_access(struct block_device *bdev, sector_t sector,
374 void **kaddr, unsigned long *pfn) 374 void **kaddr, unsigned long *pfn, long size)
375{ 375{
376 struct brd_device *brd = bdev->bd_disk->private_data; 376 struct brd_device *brd = bdev->bd_disk->private_data;
377 struct page *page; 377 struct page *page;
378 378
379 if (!brd) 379 if (!brd)
380 return -ENODEV; 380 return -ENODEV;
381 if (sector & (PAGE_SECTORS-1))
382 return -EINVAL;
383 if (sector + PAGE_SECTORS > get_capacity(bdev->bd_disk))
384 return -ERANGE;
385 page = brd_insert_page(brd, sector); 381 page = brd_insert_page(brd, sector);
386 if (!page) 382 if (!page)
387 return -ENOSPC; 383 return -ENOSPC;
388 *kaddr = page_address(page); 384 *kaddr = page_address(page);
389 *pfn = page_to_pfn(page); 385 *pfn = page_to_pfn(page);
390 386
391 return 0; 387 /*
388 * TODO: If size > PAGE_SIZE, we could look to see if the next page in
389 * the file happens to be mapped to the next page of physical RAM.
390 */
391 return PAGE_SIZE;
392} 392}
393#endif 393#endif
394 394