Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9c8387af authored by Nate Case's avatar Nate Case Committed by Paul Mackerras
Browse files

[POWERPC] Fix uninitialized variable bug in copy_{to|from}_user



Calls to copy_to_user() or copy_from_user() can fail when copying N
bytes, where N is a constant less than 8, but not 1, 2, 4, or 8,
because 'ret' is not initialized and is only set if the size is 1,
2, 4 or 8, but is tested after the switch statement for any constant
size <= 8.  This fixes it by initializing 'ret' to 1, causing the
code to fall through to the __copy_tofrom_user call for sizes other
than 1, 2, 4 or 8.

Signed-off-by: default avatarDave Scidmore <dscidmore@xes-inc.com>
Signed-off-by: default avatarNate Case <ncase@xes-inc.com>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 64e4566f
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -380,7 +380,7 @@ static inline unsigned long __copy_from_user_inatomic(void *to,
		const void __user *from, unsigned long n)
{
	if (__builtin_constant_p(n) && (n <= 8)) {
		unsigned long ret;
		unsigned long ret = 1;

		switch (n) {
		case 1:
@@ -406,7 +406,7 @@ static inline unsigned long __copy_to_user_inatomic(void __user *to,
		const void *from, unsigned long n)
{
	if (__builtin_constant_p(n) && (n <= 8)) {
		unsigned long ret;
		unsigned long ret = 1;

		switch (n) {
		case 1: