Michael Ellerman wrote:
"Naveen N. Rao" <naveen.n....@linux.vnet.ibm.com> writes:
Stephen Rothwell wrote:

The below diff fixes it for me:

diff --git a/arch/powerpc/kernel/trace/ftrace.c 
b/arch/powerpc/kernel/trace/ftrace.c
index 46c002a8388804..7418da705d43ac 100644
--- a/arch/powerpc/kernel/trace/ftrace.c
+++ b/arch/powerpc/kernel/trace/ftrace.c
@@ -746,7 +746,7 @@ int __init ftrace_dyn_arch_init(void)
reladdr = addr - kernel_toc_addr(); - if (reladdr >= SZ_2G || reladdr < -SZ_2G) {
+       if (reladdr >= SZ_2G || reladdr < -_UL(SZ_2G)) {
                pr_err("Address of %ps out of range of kernel_toc.\n",
                                (void *)addr);
                return -1;

I did:

        if (reladdr >= SZ_2G || reladdr < -(long)SZ_2G) {

That was my first attempt.

Which more closely matches what the old code did, and I think is more
obvious? ie. we don't want to negate the unsigned value, we want a
signed value, and then the negative of that.

When you put it like that... :D
In hindsight, I agree though -- _UL() isn't necessarily better.


Thanks,
Naveen

Reply via email to