Download from: http://people.redhat.com/anderson Changelog: - Fix for a crash-6.1.5 regression that causes the "mount" command to fail on kernel versions prior to Linux 3.3. Without the patch, the command fails with the message "mount: invalid structure member offset: mount_mnt_devname". The regression was caused by this patch: - Patch to the internal gdb_get_datatype() function to return the typecode and length of integer variables. (adrian.wenl@xxxxxxxxx, anderson@xxxxxxxxxx) which inadvertently caused the STRUCT_SIZE("mount") macro to return a false positive for the non-existent "mount" data structure due to the existence of a "mount" kernel symbol in "security/inode.c". The patch above was requested as an aid for an extension module, and had no use with respect to the base crash utility. However, the patch has the unintended side effect of allowing macros such as STRUCT_SIZE(), STRUCT_EXISTS(), MEMBER_OFFSET() and MEMBER_EXISTS() to return false positives. All of the macros call datatype_info(), a function that expects a data type argument. If the passed-in data type argument does not exist, but there does happen to be a kernel variable with the same name, then it used to be rejected because the internal gdb_get_datatype() function purposefully did not return the typecode and length of kernel variables. However, the patch above modified that functionality, and gdb_get_datatype() started to return the typecode and length of kernel variables. In order to allow an extension module the capability of utilizing the internal gdb_get_datatype() function with a kernel variable name instead of a data type, the patch above has been modified to return the typecode and length of data variables only if an additional, new, GNU_VAR_LENGTH_TYPECODE flag is set in the gnu_request.flags field. As it stands now, that flag is not used by the base crash utility. Furthermore, as a defensive mechanism against future breakage, the STRUCT_SIZE() and STRUCT_EXISTS() macros have been modified to pass a special non-NULL, third argument to datatype_info() that will enforce the fact that the request is only functional for data type names. In addition, the MEMBER_OFFSET() and MEMBER_EXISTS() handling in datatype_info() has been fortified to ensure that the base data type is in fact a structure or union. It should also be noted that extension modules that were compiled with the old STRUCT_SIZE() or STRUCT_EXISTS() macro definitions will still work as they did before. (anderson@xxxxxxxxxx) -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility