devm_memremap() returns an ERR_PTR() value in case of error. However, it returns NULL when memremap() failed. This causes the caller, such as the pmem driver, to proceed and oops later. Change devm_memremap() to return ERR_PTR(-ENXIO) when memremap() failed.
Showing the changes to kernel (1 of 1 file). Show all
Unified · Split
| @@ -136,8 +136,10 @@ void *devm_memremap(struct device *dev, resource_size_t offset, · 135 unmodified lines | |||
| 136 | if (addr) { | 136 | if (addr) { |
| 137 | *ptr = addr; | 137 | *ptr = addr; |
| 138 | devres_add(dev, ptr); | 138 | devres_add(dev, ptr); |
| 139 | } else | 139 | } else { |
| 140 | devres_free(ptr); | 140 | devres_free(ptr); |
| 141 | return ERR_PTR(-ENXIO); | ||
| 142 | } | ||
| 141 | 143 | ||
| 142 | return addr; | 144 | return addr; |
| 143 | } | 145 | } |