diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-05-23 04:24:13 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-05-23 04:24:13 +0200 |
commit | 21f9debf74c3ae8fdd26fd2bc3c0169a08eba6b4 (patch) | |
tree | a7e9cdcaf0177bb9606d6e5982937cce55df9898 /drivers | |
parent | x86: remove more uaccess_32.h complexity (diff) | |
parent | sparc64: Reduce TLB flushes during hugepte changes (diff) | |
download | linux-21f9debf74c3ae8fdd26fd2bc3c0169a08eba6b4.tar.xz linux-21f9debf74c3ae8fdd26fd2bc3c0169a08eba6b4.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
Pull sparc updates from David Miller:
"Some 32-bit kgdb cleanups from Sam Ravnborg, and a hugepage TLB flush
overhead fix on 64-bit from Nitin Gupta"
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
sparc64: Reduce TLB flushes during hugepte changes
aeroflex/greth: fix warning about unused variable
openprom: fix warning
sparc32: drop superfluous cast in calls to __nocache_pa()
sparc32: fix build with STRICT_MM_TYPECHECKS
sparc32: use proper prototype for trapbase
sparc32: drop local prototype in kgdb_32
sparc32: drop hardcoding trap_level in kgdb_trap
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ethernet/aeroflex/greth.c | 2 | ||||
-rw-r--r-- | drivers/sbus/char/openprom.c | 40 |
2 files changed, 17 insertions, 25 deletions
diff --git a/drivers/net/ethernet/aeroflex/greth.c b/drivers/net/ethernet/aeroflex/greth.c index b873531c5575..bca07c5c94bd 100644 --- a/drivers/net/ethernet/aeroflex/greth.c +++ b/drivers/net/ethernet/aeroflex/greth.c @@ -1323,7 +1323,7 @@ static inline int phy_aneg_done(struct phy_device *phydev) static int greth_mdio_init(struct greth_private *greth) { - int ret, phy; + int ret; unsigned long timeout; greth->mdio = mdiobus_alloc(); diff --git a/drivers/sbus/char/openprom.c b/drivers/sbus/char/openprom.c index e077ebd89319..4612691c6619 100644 --- a/drivers/sbus/char/openprom.c +++ b/drivers/sbus/char/openprom.c @@ -383,20 +383,12 @@ static struct device_node *get_node(phandle n, DATA *data) } /* Copy in a whole string from userspace into kernelspace. */ -static int copyin_string(char __user *user, size_t len, char **ptr) +static char * copyin_string(char __user *user, size_t len) { - char *tmp; - if ((ssize_t)len < 0 || (ssize_t)(len + 1) < 0) - return -EINVAL; - - tmp = memdup_user_nul(user, len); - if (IS_ERR(tmp)) - return PTR_ERR(tmp); + return ERR_PTR(-EINVAL); - *ptr = tmp; - - return 0; + return memdup_user_nul(user, len); } /* @@ -415,9 +407,9 @@ static int opiocget(void __user *argp, DATA *data) dp = get_node(op.op_nodeid, data); - err = copyin_string(op.op_name, op.op_namelen, &str); - if (err) - return err; + str = copyin_string(op.op_name, op.op_namelen); + if (IS_ERR(str)) + return PTR_ERR(str); pval = of_get_property(dp, str, &len); err = 0; @@ -440,7 +432,7 @@ static int opiocnextprop(void __user *argp, DATA *data) struct device_node *dp; struct property *prop; char *str; - int err, len; + int len; if (copy_from_user(&op, argp, sizeof(op))) return -EFAULT; @@ -449,9 +441,9 @@ static int opiocnextprop(void __user *argp, DATA *data) if (!dp) return -EINVAL; - err = copyin_string(op.op_name, op.op_namelen, &str); - if (err) - return err; + str = copyin_string(op.op_name, op.op_namelen); + if (IS_ERR(str)) + return PTR_ERR(str); if (str[0] == '\0') { prop = dp->properties; @@ -494,14 +486,14 @@ static int opiocset(void __user *argp, DATA *data) if (!dp) return -EINVAL; - err = copyin_string(op.op_name, op.op_namelen, &str); - if (err) - return err; + str = copyin_string(op.op_name, op.op_namelen); + if (IS_ERR(str)) + return PTR_ERR(str); - err = copyin_string(op.op_buf, op.op_buflen, &tmp); - if (err) { + tmp = copyin_string(op.op_buf, op.op_buflen); + if (IS_ERR(tmp)) { kfree(str); - return err; + return PTR_ERR(tmp); } err = of_set_property(dp, str, tmp, op.op_buflen); |