drm/nouveau: Don't pass misaligned offsets to io_mapping_map_atomic_wc().
Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
committed by
Ben Skeggs
parent
a0d069ea2c
commit
0bf9b0e0ce
@@ -2083,9 +2083,10 @@ peek_fb(struct drm_device *dev, struct io_mapping *fb,
|
|||||||
uint32_t val = 0;
|
uint32_t val = 0;
|
||||||
|
|
||||||
if (off < pci_resource_len(dev->pdev, 1)) {
|
if (off < pci_resource_len(dev->pdev, 1)) {
|
||||||
uint32_t __iomem *p = io_mapping_map_atomic_wc(fb, off, KM_USER0);
|
uint32_t __iomem *p =
|
||||||
|
io_mapping_map_atomic_wc(fb, off & PAGE_MASK, KM_USER0);
|
||||||
|
|
||||||
val = ioread32(p);
|
val = ioread32(p + (off & ~PAGE_MASK));
|
||||||
|
|
||||||
io_mapping_unmap_atomic(p, KM_USER0);
|
io_mapping_unmap_atomic(p, KM_USER0);
|
||||||
}
|
}
|
||||||
@@ -2098,9 +2099,10 @@ poke_fb(struct drm_device *dev, struct io_mapping *fb,
|
|||||||
uint32_t off, uint32_t val)
|
uint32_t off, uint32_t val)
|
||||||
{
|
{
|
||||||
if (off < pci_resource_len(dev->pdev, 1)) {
|
if (off < pci_resource_len(dev->pdev, 1)) {
|
||||||
uint32_t __iomem *p = io_mapping_map_atomic_wc(fb, off, KM_USER0);
|
uint32_t __iomem *p =
|
||||||
|
io_mapping_map_atomic_wc(fb, off & PAGE_MASK, KM_USER0);
|
||||||
|
|
||||||
iowrite32(val, p);
|
iowrite32(val, p + (off & ~PAGE_MASK));
|
||||||
wmb();
|
wmb();
|
||||||
|
|
||||||
io_mapping_unmap_atomic(p, KM_USER0);
|
io_mapping_unmap_atomic(p, KM_USER0);
|
||||||
|
Reference in New Issue
Block a user