habanalabs: enforce alignment upon registers access through debugfs
authorDafna Hirschfeld <dhirschfeld@habana.ai>
Wed, 16 Mar 2022 17:45:24 +0000 (19:45 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 22 May 2022 19:01:16 +0000 (21:01 +0200)
When accessing the configuration registers through debugfs,
it is only allowed to access aligned address.
Fail if address is not aligned.

Signed-off-by: Dafna Hirschfeld <dhirschfeld@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/habanalabs/common/device.c

index bd76a68..9a71737 100644 (file)
@@ -94,6 +94,11 @@ int hl_access_cfg_region(struct hl_device *hdev, u64 addr, u64 *val,
        struct pci_mem_region *cfg_region = &hdev->pci_mem_region[PCI_REGION_CFG];
        u32 val_h, val_l;
 
+       if (!IS_ALIGNED(addr, sizeof(u32))) {
+               dev_err(hdev->dev, "address %#llx not a multiple of %zu\n", addr, sizeof(u32));
+               return -EINVAL;
+       }
+
        switch (acc_type) {
        case DEBUGFS_READ32:
                *val = RREG32(addr - cfg_region->region_base);