[Crash-utility] [PATCH v3] Show module taint flags

Dave Anderson anderson at redhat.com
Tue May 7 19:07:47 UTC 2013



----- Original Message -----
> Hi Dave,
> 
> 
> Sorry about the delay. I've finally found the time to attempt another
> version.
> 
> As per your request, I've updated *help_mod[] to document the -T option.
> Also in this particular version, I omit ' ' and '-', when false, as I'm under
> the impression that we're only interested in true values as per module_flags()
> (since 2.6.25).
> I suspect that there shouldn't be a situation where a module isn't tainted since
> every module is either proprietary license or GPL. However, if this is not
> acceptable I can change this behaviour.
> 
> For module.gpgsig_ok case (as seen in kernel-2.6.32-1.el6), I've decided to follow
> the same logic to highlight "(U)" to the user, as per print_modules().
> With regards to module.sig_ok, this is handled, as seen under 3.8.9-200.fc18:
> 
> 	nf_nat                   G
> 	bnx2i                    G
> 	ip6t_REJECT              G
> 	nf_defrag_ipv6           G
> 	be2iscsi                 G
> 	tun                      G
> 	test                     GFO
> 	
> For pre 2.6.28 kernels, I'll work on a solution that simply displays the bit number
> to then refer the user to the relevant kernel source for details on what the bit
> number means, as per your suggestion. I just wanted to get this version out to the
> mailing list for review.

Right -- it seems reasonable to at least print a hexadecimal value for the
earlier kernels.  The "help mod" output should state something to the effect that
the relevant kernel sources should be consulted for the meaning of either the 
letter(s) or hexadecimal bit-value(s). 

Also, this piece had me scratching my head a little bit:

                if (is_module_taint(lm, buf2, &maxtnts_len)) {
                        fprintf(fp, "%s  ", mkstring(buf1, maxnamelen,
                                LJUST, lm->mod_name));
                        fprintf(fp, "%s\n", mkstring(buf2, maxtnts_len,
                                LJUST, buf2));
                }

Why bother with the "maxtnts_len" business and the mkstring() call for the
taints string?  I understand that the lm->mod_name should be passed to 
mkstring() to keep that field length common (i.e. maxnamelen), but for
the taint string, you can just print it as-is without bothering to do
any kind of justification or worrying about the field length.  Since the
string is left-justified when created, and since it's got nothing to 
display after it, you can just do this:

                        fprintf(fp, "%s  %s", mkstring(buf1, maxnamelen,
                                LJUST, lm->mod_name), buf2);
                    
I'm guessing that it's just a left-over from your earlier patch where
you were squeezing it in the general "mod" display string...

Thanks,
  Dave

           
> Cheers,
> Aaron
> 
> --8<--
> 
>  help.c   |   18 ++++++++-
>  kernel.c |  124
>  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
>  2 files changed, 140 insertions(+), 2 deletion
> 
> 
> --
> Crash-utility mailing list
> Crash-utility at redhat.com
> https://www.redhat.com/mailman/listinfo/crash-utility




More information about the Crash-utility mailing list