Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit de74f703 authored by Timur Tabi's avatar Timur Tabi Committed by Kumar Gala
Browse files

[POWERPC] QE: fix invalid pointer usage in ucc_slow_init()



In two places, ucc_slow_init() passes a physical address instead of the
virtual address to functions that were expecting the latter, causing a kernel
panic.  us_info->regs contains the physical address of the UCC register set.
The registers are ioremap'd to kernel space, and the virtual pointers are
stored in us_regs.  The code was using us_info->regs when it should have been
using us_regs.

Signed-off-by: default avatarTimur Tabi <timur@freescale.com>
Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
parent 8b033367
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -187,7 +187,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc
	uccs->us_pram = qe_muram_addr(uccs->us_pram_offset);

	/* Init Guemr register */
	if ((ret = ucc_init_guemr((struct ucc_common *) (us_info->regs)))) {
	if ((ret = ucc_init_guemr((struct ucc_common *) us_regs))) {
		printk(KERN_ERR "%s: cannot init GUEMR", __FUNCTION__);
		ucc_slow_free(uccs);
		return ret;
@@ -195,7 +195,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc

	/* Set UCC to slow type */
	if ((ret = ucc_set_type(us_info->ucc_num,
				(struct ucc_common *) (us_info->regs),
				(struct ucc_common *) us_regs,
				UCC_SPEED_TYPE_SLOW))) {
		printk(KERN_ERR "%s: cannot set UCC type", __FUNCTION__);
		ucc_slow_free(uccs);