diff options
| author | Jens Axboe <axboe@fb.com> | 2015-01-13 23:58:45 -0500 |
|---|---|---|
| committer | Jens Axboe <axboe@fb.com> | 2015-01-13 23:58:45 -0500 |
| commit | d4119ee0e1aa2b74e5e367cbc915e79db7b9e271 (patch) | |
| tree | dae4e7bebdda0db62a00c5bb3d054a6018d68444 /arch/powerpc/sysdev | |
| parent | 91117a20245b59f70b563523edbf998a62fc6383 (diff) | |
| parent | dd22f551ac0ad366f92f601835f6623b83adc331 (diff) | |
Merge branch 'for-3.20/core' into for-3.20/drivers
Diffstat (limited to 'arch/powerpc/sysdev')
| -rw-r--r-- | arch/powerpc/sysdev/axonram.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/arch/powerpc/sysdev/axonram.c b/arch/powerpc/sysdev/axonram.c index 367533bb3d48..ee90db17b097 100644 --- a/arch/powerpc/sysdev/axonram.c +++ b/arch/powerpc/sysdev/axonram.c | |||
| @@ -139,26 +139,17 @@ axon_ram_make_request(struct request_queue *queue, struct bio *bio) | |||
| 139 | * axon_ram_direct_access - direct_access() method for block device | 139 | * axon_ram_direct_access - direct_access() method for block device |
| 140 | * @device, @sector, @data: see block_device_operations method | 140 | * @device, @sector, @data: see block_device_operations method |
| 141 | */ | 141 | */ |
| 142 | static int | 142 | static long |
| 143 | axon_ram_direct_access(struct block_device *device, sector_t sector, | 143 | axon_ram_direct_access(struct block_device *device, sector_t sector, |
| 144 | void **kaddr, unsigned long *pfn) | 144 | void **kaddr, unsigned long *pfn, long size) |
| 145 | { | 145 | { |
| 146 | struct axon_ram_bank *bank = device->bd_disk->private_data; | 146 | struct axon_ram_bank *bank = device->bd_disk->private_data; |
| 147 | loff_t offset; | 147 | loff_t offset = (loff_t)sector << AXON_RAM_SECTOR_SHIFT; |
| 148 | |||
| 149 | offset = sector; | ||
| 150 | if (device->bd_part != NULL) | ||
| 151 | offset += device->bd_part->start_sect; | ||
| 152 | offset <<= AXON_RAM_SECTOR_SHIFT; | ||
| 153 | if (offset >= bank->size) { | ||
| 154 | dev_err(&bank->device->dev, "Access outside of address space\n"); | ||
| 155 | return -ERANGE; | ||
| 156 | } | ||
| 157 | 148 | ||
| 158 | *kaddr = (void *)(bank->ph_addr + offset); | 149 | *kaddr = (void *)(bank->ph_addr + offset); |
| 159 | *pfn = virt_to_phys(*kaddr) >> PAGE_SHIFT; | 150 | *pfn = virt_to_phys(*kaddr) >> PAGE_SHIFT; |
| 160 | 151 | ||
| 161 | return 0; | 152 | return bank->size - offset; |
| 162 | } | 153 | } |
| 163 | 154 | ||
| 164 | static const struct block_device_operations axon_ram_devops = { | 155 | static const struct block_device_operations axon_ram_devops = { |
