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]
Date:	Sat, 4 Sep 2010 22:06:25 -0700
From:	Guenter Roeck <guenter.roeck@...csson.com>
To:	CAI Qian <caiqian@...hat.com>
CC:	Dave Anderson <anderson@...hat.com>,
	"tj@...nel.org" <tj@...nel.org>, "gregkh@...e.de" <gregkh@...e.de>,
	linux-kernel <linux-kernel@...r.kernel.org>
Subject: Re: crash failure with 2.6.36-rc3 vmcore

On Sat, Sep 04, 2010 at 11:17:34PM -0400, CAI Qian wrote:
> 
> ----- "Guenter Roeck" <guenter.roeck@...csson.com> wrote:
> 
> > On Sat, Sep 04, 2010 at 11:07:43AM -0400, caiqian@...hat.com wrote:
> > > Sorry for the confusion. Here is some background. The test here was
> > to use the crash utility to analyse a vmcore generated from kdump.
> > This commit caused its subcommand mod -S failed to gather the module
> > section data from the in-kernel data structure as it looks like it
> > still depends on this field. I am not sure if that the crash utility
> > just need to be adjusted to cope with this kernel change.
> > > 
> > That would be the proper fix.
> > 
> > Question is what version of the crash utility you are using.
> > The one included in my distribution (reporting to be version 4.1.0)
> > doesn't include the code below.
> The latest upstream version 5.0.7, and can be found here,
> http://people.redhat.com/anderson/

I browsed through the code a bit. Looks like the module owner will need to make
the necessary changes. The code now seems to depend on kernel internal structure
elements. Not sure if that is a good idea in the first place. At least for
the attribute owner it will have to be changed to not depend on its existence.

Of course, one could also argue that the field should be re-introduced in 
the kernel to make the utility work w/o changes. However, I don't think it
would be a good idea to hold the kernel hostage for such problems.

Thanks,
Guenter

> > 
> > Thanks,
> > Guenter
> > 
> > > From http://people.redhat.com/anderson/crash_sources/symbols.c
> > > /*
> > >  *  Gather the module section data from the in-kernel data
> > structures.
> > >  */
> > > static int
> > > add_symbol_file_kallsyms(struct load_module *lm, struct gnu_request
> > *req)
> > > {
> > >         int len, buflen, done, nsections, retval;
> > >         ulong vaddr, array_entry, attribute, owner, name, address;
> > >         long name_type;
> > >         char buf[BUFSIZE];
> > >         char section_name[BUFSIZE];
> > >         ulong section_vaddr;
> > > 
> > >         if (!(st->flags &
> > (MODSECT_V1|MODSECT_V2|MODSECT_V3|MODSECT_UNKNOWN))) {
> > >                 STRUCT_SIZE_INIT(module_sect_attr,
> > "module_sect_attr");
> > >                 MEMBER_OFFSET_INIT(module_sect_attrs,
> > >                         "module", "sect_attrs");
> > >                 MEMBER_OFFSET_INIT(module_sect_attrs_attrs,
> > >                         "module_sect_attrs", "attrs");
> > >                 MEMBER_OFFSET_INIT(module_sect_attrs_nsections,
> > >                         "module_sect_attrs", "nsections");
> > >                 MEMBER_OFFSET_INIT(module_sect_attr_mattr,
> > >                         "module_sect_attr", "mattr");
> > >                 MEMBER_OFFSET_INIT(module_sect_attr_name,
> > >                         "module_sect_attr", "name");
> > >                 MEMBER_OFFSET_INIT(module_sect_attr_address,
> > >                         "module_sect_attr", "address");
> > >                 MEMBER_OFFSET_INIT(module_attribute_attr,
> > >                         "module_attribute", "attr");
> > >                 MEMBER_OFFSET_INIT(module_sect_attr_attr,
> > >                         "module_sect_attr", "attr");
> > >                 MEMBER_OFFSET_INIT(module_sections_attrs,
> > >                         "module_sections", "attrs");
> > >                 MEMBER_OFFSET_INIT(attribute_owner,
> > >                         "attribute", "owner");
> > > ...
> > >                 owner = attribute + OFFSET(attribute_owner);
> > > 
> > > 
> > > ----- "Guenter Roeck" <guenter.roeck@...csson.com> wrote:
> > > 
> > > > Hi,
> > > > 
> > > > On Sat, Sep 04, 2010 at 02:01:06AM -0400, CAI Qian wrote:
> > > > > 
> > > > > > crash> mod -S
> > > > > > 
> > > > > > mod: invalid structure member offset: attribute_owner
> > > > > >      FILE: symbols.c  LINE: 8577  FUNCTION:
> > > > add_symbol_file_kallsyms()
> > > > > > 
> > > > > >      MODULE       NAME                   SIZE  OBJECT FILE
> > > > > > ffffffffa000de60  dm_mod                76230 
> > > > > >
> > > >
> > /lib/modules/2.6.36-rc2-mm1-wqfix-mkdfix+/kernel/drivers/md/dm-mod.ko
> > > > > > [/usr/bin/crash] error trace: 4affb0 => 4f3236 => 4f12b5 =>
> > > > 4e587a
> > > > > > 
> > > > > >   4e587a: OFFSET_verify.clone.4+186
> > > > > >   4f12b5: add_symbol_file+933
> > > > > >   4f3236: load_module_symbols+566
> > > > > >   4affb0: do_module_cmd+1264
> > > > > > 
> > > > > > mod: invalid structure member offset: attribute_owner
> > > > > >      FILE: symbols.c  LINE: 8577  FUNCTION:
> > > > add_symbol_file_kallsyms()
> > > > 
> > > > What do I have to do to reproduce this crash ? 
> > > > 
> > > > Was the module in question compiled w/ the kernel, or separately
> > ?
> > > > Did it use the correct kernel header files for compilation ?
> > > > Was the kernel version -rc3, or some other patched version ?
> > > > 
> > > > Just wondering, since the above message says
> > > > 2.6.36-rc2-mm1-wqfix-mkdfix+,
> > > > which seems to indicate that it included some modifications.
> > > > 
> > > > Thanks,
> > > > Guenter
> > > > 
> > > > > This failure was due to this commit,
> > > > > 
> > > > > commit 6fd69dc578fa0b1bbc3aad70ae3af9a137211707
> > > > > Author: Guenter Roeck <guenter.roeck@...csson.com>
> > > > > Date:   Wed Jul 28 22:09:26 2010 -0700
> > > > > 
> > > > >     sysfs: Remove owner field from sysfs struct attribute
> > > > >     
> > > > >     Signed-off-by: Guenter Roeck <guenter.roeck@...csson.com>
> > > > >     Acked-by: Tejun Heo <tj@...nel.org>
> > > > >     Signed-off-by: Greg Kroah-Hartman <gregkh@...e.de>
> > > > > 
> > > > > diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
> > > > > index 8bf06b6..3c92121 100644
> > > > > --- a/include/linux/sysfs.h
> > > > > +++ b/include/linux/sysfs.h
> > > > > @@ -22,14 +22,8 @@ struct kobject;
> > > > >  struct module;
> > > > >  enum kobj_ns_type;
> > > > >  
> > > > > -/* FIXME
> > > > > - * The *owner field is no longer used.
> > > > > - * x86 tree has been cleaned up. The owner
> > > > > - * attribute is still left for other arches.
> > > > > - */
> > > > >  struct attribute {
> > > > >         const char              *name;
> > > > > -       struct module           *owner;
> > > > >         mode_t                  mode;
> > > > >  #ifdef CONFIG_DEBUG_LOCK_ALLOC
> > > > >         struct lock_class_key   *key;
--
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