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 = { |