diff options
| author | Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> | 2013-12-17 12:18:49 -0500 |
|---|---|---|
| committer | Joerg Roedel <joro@8bytes.org> | 2014-01-07 09:35:25 -0500 |
| commit | dc89f797abdbfc58dfb28af944f80f0299a8fafa (patch) | |
| tree | 93b68a13f9026fa2bf3abda3fcf11ff749f23f0d | |
| parent | 78a2e12f51d9ec37c328fa5a429c676eeeba8cd1 (diff) | |
iommu/shmobile: Allocate archdata with kzalloc()
The archdata attached_list field isn't initialized, leading to random
crashes when accessed. Use kzalloc() to allocate the whole structure and
make sure all fields get initialized properly.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Joerg Roedel <joro@8bytes.org>
| -rw-r--r-- | drivers/iommu/shmobile-iommu.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/iommu/shmobile-iommu.c b/drivers/iommu/shmobile-iommu.c index d572863dfccd..7a3b928fad1c 100644 --- a/drivers/iommu/shmobile-iommu.c +++ b/drivers/iommu/shmobile-iommu.c | |||
| @@ -380,14 +380,13 @@ int ipmmu_iommu_init(struct shmobile_ipmmu *ipmmu) | |||
| 380 | kmem_cache_destroy(l1cache); | 380 | kmem_cache_destroy(l1cache); |
| 381 | return -ENOMEM; | 381 | return -ENOMEM; |
| 382 | } | 382 | } |
| 383 | archdata = kmalloc(sizeof(*archdata), GFP_KERNEL); | 383 | archdata = kzalloc(sizeof(*archdata), GFP_KERNEL); |
| 384 | if (!archdata) { | 384 | if (!archdata) { |
| 385 | kmem_cache_destroy(l1cache); | 385 | kmem_cache_destroy(l1cache); |
| 386 | kmem_cache_destroy(l2cache); | 386 | kmem_cache_destroy(l2cache); |
| 387 | return -ENOMEM; | 387 | return -ENOMEM; |
| 388 | } | 388 | } |
| 389 | spin_lock_init(&archdata->attach_lock); | 389 | spin_lock_init(&archdata->attach_lock); |
| 390 | archdata->attached = NULL; | ||
| 391 | archdata->ipmmu = ipmmu; | 390 | archdata->ipmmu = ipmmu; |
| 392 | ipmmu_archdata = archdata; | 391 | ipmmu_archdata = archdata; |
| 393 | bus_set_iommu(&platform_bus_type, &shmobile_iommu_ops); | 392 | bus_set_iommu(&platform_bus_type, &shmobile_iommu_ops); |
