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] [thread-next>] [day] [month] [year] [list]
Message-ID: <48D29741.4070404@goop.org>
Date:	Thu, 18 Sep 2008 11:00:33 -0700
From:	Jeremy Fitzhardinge <jeremy@...p.org>
To:	Jan Beulich <jbeulich@...ell.com>
CC:	Ingo Molnar <mingo@...e.hu>, tglx@...utronix.de,
	linux-kernel@...r.kernel.org, hpa@...or.com
Subject: Re: [PATCH] x86: x86_{phys,virt}_bits field also for i386 (v3)

Jan Beulich wrote:
>>>> Ingo Molnar <mingo@...e.hu> 18.09.08 13:20 >>>
>>>>         
>> * Ingo Molnar <mingo@...e.hu> wrote:
>>
>>     
>>> * Jan Beulich <jbeulich@...ell.com> wrote:
>>>
>>>       
>>>> I'm really sorry for that, yet another merge oversight (not caught 
>>>> because only re-tested on x86-64). Here's a better one.
>>>>         
>>> ah, i see, the delta below. Nasty.
>>>       
>> the attached config fails in a similar way.
>>     
>
> Hmm, yes, other than in .27, -tip derives resource_size_t from phys_addr_t,
> regardless of CONFIG_RESOURCES_64BIT (and the config you provided
> is a non-PAE one). I have to question that change, which I'm sure is
> responsible for this failure. If there's a good reason for this, then
> phys_addr_valid() should use phys_addr_t as its parameter type (and
> so should ioremap() & Co), and the pre-processor conditional should
> then change to depend on CONFIG_PHYS_ADDR_T_64BIT. Since ioremap()
> would need to change first, I'd have to withdraw the patch until that
> gets sorted out.

I take it we're talking about this chunk:

-static inline int phys_addr_valid(unsigned long addr)
+static inline int phys_addr_valid(resource_size_t addr)
 {
-	return addr < (1UL << boot_cpu_data.x86_phys_bits);
+#ifdef CONFIG_RESOURCES_64BIT
+	return !(addr >> boot_cpu_data.x86_phys_bits);
+#else
+	return 1;
+#endif


Is x86_phys_bits defined to be the actual number of address lines poking
out of the CPU package, or the number of address bits we can
meaningfully put into a pte?

I would say the simplest thing to do here is be explicit:

	if (sizeof(addr) == sizeof(u64))
		return !(addr >> boot_cpu_data.x86_phys_bits);
	else
		return 1; 

That's not ideal, but I guess its good enough.  I assume x86_phys_bits
can never be less than 32?

    J
--
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