From 396451e24df280a73dd59f8a1369b6687f860b26 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sun, 2 Aug 2009 14:15:27 -0700 Subject: [PATCH] --- yaml --- r: 156195 b: refs/heads/master c: 0ce166b7b46122bf91a4766e20c85a6485448765 h: refs/heads/master i: 156193: dbc7463470e9727b04686d00fa1373cce481be2b 156191: 6ed6f5067dad738559fca09c0480b065ff9cf573 v: v3 --- [refs] | 2 +- trunk/MAINTAINERS | 4 +++- trunk/drivers/pci/setup-res.c | 4 ++-- trunk/kernel/signal.c | 25 ++++++++++++++----------- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/[refs] b/[refs] index 7f615e0c3e0f..8552a2526044 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3be4ee5199ba20475749d768bf29c8399c755a69 +refs/heads/master: 0ce166b7b46122bf91a4766e20c85a6485448765 diff --git a/trunk/MAINTAINERS b/trunk/MAINTAINERS index d6befb2c470f..b1114cfac6bf 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -4995,7 +4995,9 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial.git S: Maintained TTY LAYER -S: Orphan +M: Greg Kroah-Hartman +S: Maintained +T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ F: drivers/char/tty_* F: drivers/serial/serial_core.c F: include/linux/serial_core.h diff --git a/trunk/drivers/pci/setup-res.c b/trunk/drivers/pci/setup-res.c index b711fb7181e2..1898c7b47907 100644 --- a/trunk/drivers/pci/setup-res.c +++ b/trunk/drivers/pci/setup-res.c @@ -100,16 +100,16 @@ int pci_claim_resource(struct pci_dev *dev, int resource) { struct resource *res = &dev->resource[resource]; struct resource *root; - char *dtype = resource < PCI_BRIDGE_RESOURCES ? "device" : "bridge"; int err; root = pci_find_parent_resource(dev, res); err = -EINVAL; if (root != NULL) - err = insert_resource(root, res); + err = request_resource(root, res); if (err) { + const char *dtype = resource < PCI_BRIDGE_RESOURCES ? "device" : "bridge"; dev_err(&dev->dev, "BAR %d: %s of %s %pR\n", resource, root ? "address space collision on" : diff --git a/trunk/kernel/signal.c b/trunk/kernel/signal.c index ccf1ceedaebe..64c5deeaca5d 100644 --- a/trunk/kernel/signal.c +++ b/trunk/kernel/signal.c @@ -2454,11 +2454,9 @@ do_sigaltstack (const stack_t __user *uss, stack_t __user *uoss, unsigned long s stack_t oss; int error; - if (uoss) { - oss.ss_sp = (void __user *) current->sas_ss_sp; - oss.ss_size = current->sas_ss_size; - oss.ss_flags = sas_ss_flags(sp); - } + oss.ss_sp = (void __user *) current->sas_ss_sp; + oss.ss_size = current->sas_ss_size; + oss.ss_flags = sas_ss_flags(sp); if (uss) { void __user *ss_sp; @@ -2466,10 +2464,12 @@ do_sigaltstack (const stack_t __user *uss, stack_t __user *uoss, unsigned long s int ss_flags; error = -EFAULT; - if (!access_ok(VERIFY_READ, uss, sizeof(*uss)) - || __get_user(ss_sp, &uss->ss_sp) - || __get_user(ss_flags, &uss->ss_flags) - || __get_user(ss_size, &uss->ss_size)) + if (!access_ok(VERIFY_READ, uss, sizeof(*uss))) + goto out; + error = __get_user(ss_sp, &uss->ss_sp) | + __get_user(ss_flags, &uss->ss_flags) | + __get_user(ss_size, &uss->ss_size); + if (error) goto out; error = -EPERM; @@ -2501,13 +2501,16 @@ do_sigaltstack (const stack_t __user *uss, stack_t __user *uoss, unsigned long s current->sas_ss_size = ss_size; } + error = 0; if (uoss) { error = -EFAULT; - if (copy_to_user(uoss, &oss, sizeof(oss))) + if (!access_ok(VERIFY_WRITE, uoss, sizeof(*uoss))) goto out; + error = __put_user(oss.ss_sp, &uoss->ss_sp) | + __put_user(oss.ss_size, &uoss->ss_size) | + __put_user(oss.ss_flags, &uoss->ss_flags); } - error = 0; out: return error; }