lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Wed, 09 Jan 2008 03:46:36 -0800 (PST)
From:	David Miller <davem@...emloft.net>
To:	taldmd@...il.com
Cc:	linux-kernel@...r.kernel.org, sparclinux@...r.kernel.org
Subject: Re: Compile-time error with gcc-4.3 on sparc64

From: "David Martin" <taldmd@...il.com>
Date: Wed, 9 Jan 2008 10:31:45 +0100

Please report sparc problems to the Sparc mailing list,
sparclinux@...r.kernel.org, thanks.

> I get the following error compiling latest kernel from git on sparc64
> using gcc-4.3:
> 
>   CC      arch/sparc64/kernel/signal.o
> cc1: warnings being treated as errors
> arch/sparc64/kernel/signal.c: En la función 'do_notify_resume':
> include/asm/uaccess.h:233: error: el subíndice de la matriz está por
> arriba de los límites de la matriz
> make[1]: *** [arch/sparc64/kernel/signal.o] Error 1
> make: *** [arch/sparc64/kernel] Error 2
> 
> ("On function 'do_notify resume: error: matrix subindex is over matrix limits")

I think you mean "array" instead of "matrix" in your translation.

In fact, you should rerun should build failures with "LANG=C"
for the benefit of people reading your report.

Something is very wrong with the compiler, do_notify_resume() reads:

void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, int restart_syscall,
		      unsigned long thread_info_flags)
{
	if (thread_info_flags & (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK))
		do_signal(regs, orig_i0, restart_syscall);
}

uaccess.h, line 233 is:

static inline unsigned long __must_check
copy_to_user(void __user *to, const void *from, unsigned long size)
{
	unsigned long ret = ___copy_to_user(to, from, size);
	^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

copy_to_user() isn't being called in do_notify_resume() at all.

Perhaps it's probably warning about some call to copy_to_user() that
results from the inline expansion of do_signal() and all sub-calls.

But it's a bug that GCC isn't indicating exactly where the problem is,
and in what specific function.  My guess is that it's losing context
during all of the inline expansions.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ