| .. | .. |
|---|
| 94 | 94 | } |
|---|
| 95 | 95 | |
|---|
| 96 | 96 | static bool probe_list(struct pci_dev *pdev, unsigned short vendor, |
|---|
| 97 | | - const unsigned char *rom_list) |
|---|
| 97 | + const void *rom_list) |
|---|
| 98 | 98 | { |
|---|
| 99 | 99 | unsigned short device; |
|---|
| 100 | 100 | |
|---|
| 101 | 101 | do { |
|---|
| 102 | | - if (probe_kernel_address(rom_list, device) != 0) |
|---|
| 102 | + if (get_kernel_nofault(device, rom_list) != 0) |
|---|
| 103 | 103 | device = 0; |
|---|
| 104 | 104 | |
|---|
| 105 | 105 | if (device && match_id(pdev, vendor, device)) |
|---|
| .. | .. |
|---|
| 119 | 119 | for (i = 0; i < ARRAY_SIZE(adapter_rom_resources); i++) { |
|---|
| 120 | 120 | struct resource *res = &adapter_rom_resources[i]; |
|---|
| 121 | 121 | unsigned short offset, vendor, device, list, rev; |
|---|
| 122 | | - const unsigned char *rom; |
|---|
| 122 | + const void *rom; |
|---|
| 123 | 123 | |
|---|
| 124 | 124 | if (res->end == 0) |
|---|
| 125 | 125 | break; |
|---|
| 126 | 126 | |
|---|
| 127 | 127 | rom = isa_bus_to_virt(res->start); |
|---|
| 128 | | - if (probe_kernel_address(rom + 0x18, offset) != 0) |
|---|
| 128 | + if (get_kernel_nofault(offset, rom + 0x18) != 0) |
|---|
| 129 | 129 | continue; |
|---|
| 130 | 130 | |
|---|
| 131 | | - if (probe_kernel_address(rom + offset + 0x4, vendor) != 0) |
|---|
| 131 | + if (get_kernel_nofault(vendor, rom + offset + 0x4) != 0) |
|---|
| 132 | 132 | continue; |
|---|
| 133 | 133 | |
|---|
| 134 | | - if (probe_kernel_address(rom + offset + 0x6, device) != 0) |
|---|
| 134 | + if (get_kernel_nofault(device, rom + offset + 0x6) != 0) |
|---|
| 135 | 135 | continue; |
|---|
| 136 | 136 | |
|---|
| 137 | 137 | if (match_id(pdev, vendor, device)) { |
|---|
| .. | .. |
|---|
| 139 | 139 | break; |
|---|
| 140 | 140 | } |
|---|
| 141 | 141 | |
|---|
| 142 | | - if (probe_kernel_address(rom + offset + 0x8, list) == 0 && |
|---|
| 143 | | - probe_kernel_address(rom + offset + 0xc, rev) == 0 && |
|---|
| 142 | + if (get_kernel_nofault(list, rom + offset + 0x8) == 0 && |
|---|
| 143 | + get_kernel_nofault(rev, rom + offset + 0xc) == 0 && |
|---|
| 144 | 144 | rev >= 3 && list && |
|---|
| 145 | 145 | probe_list(pdev, vendor, rom + offset + list)) { |
|---|
| 146 | 146 | oprom = res; |
|---|
| .. | .. |
|---|
| 183 | 183 | const unsigned short * const ptr = (const unsigned short *)rom; |
|---|
| 184 | 184 | unsigned short sig; |
|---|
| 185 | 185 | |
|---|
| 186 | | - return probe_kernel_address(ptr, sig) == 0 && sig == ROMSIGNATURE; |
|---|
| 186 | + return get_kernel_nofault(sig, ptr) == 0 && sig == ROMSIGNATURE; |
|---|
| 187 | 187 | } |
|---|
| 188 | 188 | |
|---|
| 189 | 189 | static int __init romchecksum(const unsigned char *rom, unsigned long length) |
|---|
| 190 | 190 | { |
|---|
| 191 | 191 | unsigned char sum, c; |
|---|
| 192 | 192 | |
|---|
| 193 | | - for (sum = 0; length && probe_kernel_address(rom++, c) == 0; length--) |
|---|
| 193 | + for (sum = 0; length && get_kernel_nofault(c, rom++) == 0; length--) |
|---|
| 194 | 194 | sum += c; |
|---|
| 195 | 195 | return !length && !sum; |
|---|
| 196 | 196 | } |
|---|
| .. | .. |
|---|
| 211 | 211 | |
|---|
| 212 | 212 | video_rom_resource.start = start; |
|---|
| 213 | 213 | |
|---|
| 214 | | - if (probe_kernel_address(rom + 2, c) != 0) |
|---|
| 214 | + if (get_kernel_nofault(c, rom + 2) != 0) |
|---|
| 215 | 215 | continue; |
|---|
| 216 | 216 | |
|---|
| 217 | 217 | /* 0 < length <= 0x7f * 512, historically */ |
|---|
| .. | .. |
|---|
| 249 | 249 | if (!romsignature(rom)) |
|---|
| 250 | 250 | continue; |
|---|
| 251 | 251 | |
|---|
| 252 | | - if (probe_kernel_address(rom + 2, c) != 0) |
|---|
| 252 | + if (get_kernel_nofault(c, rom + 2) != 0) |
|---|
| 253 | 253 | continue; |
|---|
| 254 | 254 | |
|---|
| 255 | 255 | /* 0 < length <= 0x7f * 512, historically */ |
|---|