svn commit: r273266 - in head: lib/libkvm sys/compat/freebsd32 sys/kern sys/sys
Dimitry Andric
dim at FreeBSD.org
Tue Nov 11 07:22:41 UTC 2014
It is indeed used to calculate an address offset, but as it is already
checked against NOCPU, it should be good:
gnu/usr.bin/gdb/kgdb/kthr.c: kt->cpu = td.td_oncpu;
gnu/usr.bin/gdb/kgdb/trgt_i386.c: if (kt == NULL || kt->cpu == NOCPU)
gnu/usr.bin/gdb/kgdb/trgt_i386.c: addr += (kt->cpu * NGDT + GPROC0_SEL) * sizeof(sd);
Maybe the test could be strengthened to check that kt->cpu >= 0, but it
might be overkill.
-Dimitry
> On 11 Nov 2014, at 00:17, Adrian Chadd <adrian at FreeBSD.org> wrote:
>
> just double-check that the cpu id isn't used to size anything; I've
> seen it used as an offset into stuff, and NOCPU would've been entry
> 255 in the array, not -1.
>
> Ian pointed this out to me recently and I've only just started digging into it.
>
>
>
> -adrian
>
>
> On 10 November 2014 12:35, John Baldwin <jhb at freebsd.org> wrote:
>> On Monday, November 10, 2014 09:13:08 PM Dimitry Andric wrote:
>>> I noted something similar for kgdb, when compiled with gcc:
>>>
>>> cc1: warnings being treated as errors
>>> /usr/src/gnu/usr.bin/gdb/kgdb/trgt_i386.c: In function
>>> 'kgdb_trgt_fetch_tss': /usr/src/gnu/usr.bin/gdb/kgdb/trgt_i386.c:142:
>>> warning: comparison is always false due to limited range of data type
>>>
>>> In gnu/usr.bin/gdb/kgdb/kgdb.h, there is:
>>>
>>> struct kthr {
>>> struct kthr *next;
>>> uintptr_t paddr;
>>> uintptr_t kaddr;
>>> uintptr_t kstack;
>>> uintptr_t pcb;
>>> int tid;
>>> int pid;
>>> u_char cpu;
>>> };
>>>
>>> The cpu field is assigned from td.td_oncpu (which is an int) in
>>> kgdb_thr_add_procs(), so I think it should be safe to change it to an
>>> int too:
>>>
>>> Index: gnu/usr.bin/gdb/kgdb/kgdb.h
>>> ===================================================================
>>> --- gnu/usr.bin/gdb/kgdb/kgdb.h (revision 274350)
>>> +++ gnu/usr.bin/gdb/kgdb/kgdb.h (working copy)
>>> @@ -41,7 +41,7 @@
>>> uintptr_t pcb;
>>> int tid;
>>> int pid;
>>> - u_char cpu;
>>> + int cpu;
>>> };
>>>
>>> extern struct kthr *curkthr;
>>
>> Yes, please commit.
>>
>> --
>> John Baldwin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 194 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.freebsd.org/pipermail/svn-src-head/attachments/20141111/2bc3ee46/attachment.sig>
More information about the svn-src-head
mailing list