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

Dave Anderson anderson at redhat.com
Fri Jun 16 13:25:43 UTC 2006


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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/crash-utility/attachments/20060616/9244d165/attachment.htm>


More information about the Crash-utility mailing list