提交 7fc22f45 编写于 作者: L Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc

Pull sparc updates from David Miller:
 "sparc changes, including a bug fix for handling exceptions during
  bzero on some sparc64 cpus"

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
  sparc64: fix fault handling in NGbzero.S and GENbzero.S
  sparc: use memdup_user_nul in sun4m LED driver
  sparc: Remove redundant tests in boot_flags_init().
...@@ -939,3 +939,9 @@ ENTRY(__retl_o1) ...@@ -939,3 +939,9 @@ ENTRY(__retl_o1)
retl retl
mov %o1, %o0 mov %o1, %o0
ENDPROC(__retl_o1) ENDPROC(__retl_o1)
ENTRY(__retl_o1_asi)
wr %o5, 0x0, %asi
retl
mov %o1, %o0
ENDPROC(__retl_o1_asi)
...@@ -70,16 +70,9 @@ static ssize_t led_proc_write(struct file *file, const char __user *buffer, ...@@ -70,16 +70,9 @@ static ssize_t led_proc_write(struct file *file, const char __user *buffer,
if (count > LED_MAX_LENGTH) if (count > LED_MAX_LENGTH)
count = LED_MAX_LENGTH; count = LED_MAX_LENGTH;
buf = kmalloc(sizeof(char) * (count + 1), GFP_KERNEL); buf = memdup_user_nul(buffer, count);
if (!buf) if (IS_ERR(buf))
return -ENOMEM; return PTR_ERR(buf);
if (copy_from_user(buf, buffer, count)) {
kfree(buf);
return -EFAULT;
}
buf[count] = '\0';
/* work around \n when echo'ing into proc */ /* work around \n when echo'ing into proc */
if (buf[count - 1] == '\n') if (buf[count - 1] == '\n')
......
...@@ -148,7 +148,7 @@ static void __init boot_flags_init(char *commands) ...@@ -148,7 +148,7 @@ static void __init boot_flags_init(char *commands)
{ {
while (*commands) { while (*commands) {
/* Move to the start of the next "argument". */ /* Move to the start of the next "argument". */
while (*commands && *commands == ' ') while (*commands == ' ')
commands++; commands++;
/* Process any command switches, otherwise skip it. */ /* Process any command switches, otherwise skip it. */
......
...@@ -133,7 +133,7 @@ static void __init boot_flags_init(char *commands) ...@@ -133,7 +133,7 @@ static void __init boot_flags_init(char *commands)
{ {
while (*commands) { while (*commands) {
/* Move to the start of the next "argument". */ /* Move to the start of the next "argument". */
while (*commands && *commands == ' ') while (*commands == ' ')
commands++; commands++;
/* Process any command switches, otherwise skip it. */ /* Process any command switches, otherwise skip it. */
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
98: x,y; \ 98: x,y; \
.section __ex_table,"a";\ .section __ex_table,"a";\
.align 4; \ .align 4; \
.word 98b, __retl_o1; \ .word 98b, __retl_o1_asi;\
.text; \ .text; \
.align 4; .align 4;
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
98: x,y; \ 98: x,y; \
.section __ex_table,"a";\ .section __ex_table,"a";\
.align 4; \ .align 4; \
.word 98b, __retl_o1; \ .word 98b, __retl_o1_asi;\
.text; \ .text; \
.align 4; .align 4;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册