[Crash-utility] crash-4.0-2.30 broken on 2.6.17-rc6-mm2 ?

Badari Pulavarty pbadari at us.ibm.com
Fri Jun 16 22:37:10 UTC 2006



Dave Anderson wrote:

> Jun'ichi Nomura wrote:
>
>> Hi,
>>
>> Dave Anderson wrote:
>> >> static inline struct new_utsname *utsname(void)
>> >> {
>> >>         return &current->nsproxy->uts_ns->name;
>> >> }
>> >>
>> >>
>> > Ok, thanks...
>> >
>> > Well, at a minimum we'll have to skip the
>> > verify_namelist() stage, or perhaps call it later,
>> > some time after:
>> >
>> > (1) task_init() is complete, and
>> > (2) the required new_utsname fields get filled in from
>> >     following the trail above, perhaps from the first
>> >     idle task?
>> >
>> > Unless there's some other way we can access it.
>>
>> I think you can get it from init_uts_ns.name,
>> where 'name' is struct new_utsname.
>>
>>    init/version.c:
>>    struct uts_namespace init_uts_ns = {
>>          .kref = {
>>                  .refcount       = ATOMIC_INIT(2),
>>          },
>>          .name = {
>>                  .sysname        = UTS_SYSNAME,
>>                  .nodename       = UTS_NODENAME,
>>                  .release        = UTS_RELEASE,
>>                  .version        = UTS_VERSION,
>>                  .machine        = UTS_MACHINE,
>>                  .domainname     = UTS_DOMAINNAME,
>>          },
>>    };
>>
>> Thanks,
>> --
>> Jun'ichi Nomura, NEC Solutions (America), Inc.
>>
> Yep, thanks Nic, I was just looking at the kernel patch, and
> it looks simple enough.
>
> Badari, since this is read PRE_GDB, can you try something
> like this:
>
> $ diff kernel.c.orig kernel.c
> 120,122c120,130
> <               readmem(symbol_value("system_utsname"), KVADDR, 
> &kt->utsname,
> <                       sizeof(struct new_utsname), "system_utsname",
> <                       FAULT_ON_ERROR);
> ---
> >               if (symbol_exists("system_utsname"))
> >                       readmem(symbol_value("system_utsname"), 
> KVADDR, &kt->utsname,
> >                               sizeof(struct new_utsname), 
> "system_utsname",
> >                               RETURN_ON_ERROR);
> >               else if (symbol_exists("init_uts_ns"))
> >                       readmem(symbol_value("init_uts_ns") + sizeof(int),
> >                               KVADDR,  &kt->utsname, sizeof(struct 
> new_utsname),
> >                               "init_uts_ns", RETURN_ON_ERROR);
> >               else
> >                       error(INFO, "cannot access utsname 
> information\n\n");
> >
> $
>
> Thanks,
>   Dave
>

Sorry for not replying earlier. I did the same thing earlier and it 
works fine with the fix.
I guess we can wait till the kernel changes make it in.

Thanks,
Badari







More information about the Crash-utility mailing list