kernel/arch/arm/plat-orion/mpp.c
.. .. @@ -28,10 +28,15 @@ 28 28 unsigned int mpp_max, void __iomem *dev_bus) 29 29 { 30 30 unsigned int mpp_nr_regs = (1 + mpp_max/8); 31 - u32 mpp_ctrl[mpp_nr_regs];31 + u32 mpp_ctrl[8];32 32 int i; 33 33 34 34 printk(KERN_DEBUG "initial MPP regs:"); 35 + if (mpp_nr_regs > ARRAY_SIZE(mpp_ctrl)) {36 + printk(KERN_ERR "orion_mpp_conf: invalid mpp_max\n");37 + return;38 + }39 +35 40 for (i = 0; i < mpp_nr_regs; i++) { 36 41 mpp_ctrl[i] = readl(mpp_ctrl_addr(i, dev_bus)); 37 42 printk(" %08x", mpp_ctrl[i]);