]> Pileus Git - ~andy/linux/commit
iommu/arm-smmu: Check for num_context_irqs > 0 to avoid divide by zero exception
authorAndreas Herrmann <andreas.herrmann@calxeda.com>
Tue, 1 Oct 2013 12:39:07 +0000 (13:39 +0100)
committerWill Deacon <will.deacon@arm.com>
Wed, 9 Oct 2013 13:14:40 +0000 (14:14 +0100)
commit44a08de2aaf7f4cf86dfcf04bee32536e4a2b5b8
treefc1702688b2a1858d18ae2db0bab740030fa9ea6
parentc55af7f719cbb0f0b28f42b3f98f662278f063c2
iommu/arm-smmu: Check for num_context_irqs > 0 to avoid divide by zero exception

With the right (or wrong;-) definition of v1 SMMU node in DTB it is
possible to trigger a division by zero in arm_smmu_init_domain_context
(if number of context irqs is 0):

       if (smmu->version == 1) {
               root_cfg->irptndx = atomic_inc_return(&smmu->irptndx);
 =>            root_cfg->irptndx %= smmu->num_context_irqs;
       } else {

Avoid this by checking for num_context_irqs > 0 when probing
for SMMU devices.

Signed-off-by: Andreas Herrmann <andreas.herrmann@calxeda.com>
[will: changed to dev_err on probe failure path]
Signed-off-by: Will Deacon <will.deacon@arm.com>
drivers/iommu/arm-smmu.c