diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-10 18:16:34 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-10 18:16:34 -0700 |
commit | b4294eecb2785a3e1d4c8fde3403f4fc4ca2dc21 (patch) | |
tree | ec188fb597ecb1560041dc03c1777f7d2c9a9b4f /arch/sparc/kernel/ds.c | |
parent | Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide (diff) | |
parent | [PATCH] sparc32: vm_area_struct access for old Sun SPARCs. (diff) | |
download | linux-dev-b4294eecb2785a3e1d4c8fde3403f4fc4ca2dc21.tar.xz linux-dev-b4294eecb2785a3e1d4c8fde3403f4fc4ca2dc21.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
Pull Sparc bugfixes from David Miller:
"Four bug fixes:
1) Enable snoop tags properly on Sparc32/LEON, from Andreas Larsson
2) strcpy() length check fix from Chen Gang.
3) Forgotten unregister_netdev() in sunvnet driver, from Dave
Kleikamp.
4) Fix broken assembler offsets used in vm_area_struct accesses on
sparc32, from Olivier DANET."
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
[PATCH] sparc32: vm_area_struct access for old Sun SPARCs.
sunvnet: vnet_port_remove must call unregister_netdev
sparc32, leon: Require separate snoop tags set to regard snooping to be enabled
arch: sparc: kernel: check the memory length before use strcpy().
Diffstat (limited to 'arch/sparc/kernel/ds.c')
-rw-r--r-- | arch/sparc/kernel/ds.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/sparc/kernel/ds.c b/arch/sparc/kernel/ds.c index 5ef48dab5636..11d460f6f9cc 100644 --- a/arch/sparc/kernel/ds.c +++ b/arch/sparc/kernel/ds.c @@ -783,6 +783,16 @@ void ldom_set_var(const char *var, const char *value) char *base, *p; int msg_len, loops; + if (strlen(var) + strlen(value) + 2 > + sizeof(pkt) - sizeof(pkt.header)) { + printk(KERN_ERR PFX + "contents length: %zu, which more than max: %lu," + "so could not set (%s) variable to (%s).\n", + strlen(var) + strlen(value) + 2, + sizeof(pkt) - sizeof(pkt.header), var, value); + return; + } + memset(&pkt, 0, sizeof(pkt)); pkt.header.data.tag.type = DS_DATA; pkt.header.data.handle = cp->handle; |