From: Todd Poynor Date: Thu, 1 Nov 2012 20:36:34 +0000 (-0700) Subject: Merge remote-tracking branch 'stable/linux-3.0.y' into android-3.0 X-Git-Tag: firefly_0821_release~7613^2~19 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=925d49abc38dcc7ef1cbfe125c6f0b2202ae3df3;p=firefly-linux-kernel-4.4.55.git Merge remote-tracking branch 'stable/linux-3.0.y' into android-3.0 Change-Id: I9685feb9277b450da10d78a455b3c0674d6cfe18 Signed-off-by: Todd Poynor --- 925d49abc38dcc7ef1cbfe125c6f0b2202ae3df3 diff --cc arch/arm/kernel/smp.c index 9739bb8a2d28,511eb0397c1a..e895f97ab008 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@@ -641,13 -596,11 +653,15 @@@ asmlinkage void __exception_irq_entry d break; case IPI_CPU_STOP: + irq_enter(); ipi_cpu_stop(cpu); + irq_exit(); break; + case IPI_CPU_BACKTRACE: + ipi_cpu_backtrace(cpu, regs); + break; + default: printk(KERN_CRIT "CPU%u: Unknown IPI message 0x%x\n", cpu, ipinr); diff --cc drivers/net/tun.c index 76b865065679,a631bf71fee5..3cc22b9eda53 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@@ -1239,16 -1239,12 +1239,18 @@@ static long __tun_chr_ioctl(struct fil int vnet_hdr_sz; int ret; +#ifdef CONFIG_ANDROID_PARANOID_NETWORK + if (cmd != TUNGETIFF && !capable(CAP_NET_ADMIN)) { + return -EPERM; + } +#endif + - if (cmd == TUNSETIFF || _IOC_TYPE(cmd) == 0x89) + if (cmd == TUNSETIFF || _IOC_TYPE(cmd) == 0x89) { if (copy_from_user(&ifr, argp, ifreq_len)) return -EFAULT; - + } else { + memset(&ifr, 0, sizeof(ifr)); + } if (cmd == TUNGETFEATURES) { /* Currently this just means: "what IFF flags are valid?". * This is needed because we never checked for invalid flags on diff --cc include/linux/mmc/host.h index 2cfa8d02e719,f8d1e741d80c..2e46d530086a --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h @@@ -267,12 -265,9 +267,13 @@@ struct mmc_host const struct mmc_bus_ops *bus_ops; /* current bus driver */ unsigned int bus_refs; /* reference counter */ + unsigned int bus_resume_flags; +#define MMC_BUSRESUME_MANUAL_RESUME (1 << 0) +#define MMC_BUSRESUME_NEEDS_RESUME (1 << 1) + unsigned int sdio_irqs; struct task_struct *sdio_irq_thread; + bool sdio_irq_pending; atomic_t sdio_irq_thread_abort; mmc_pm_flag_t pm_flags; /* requested pm features */