[abrt/f15] dont send tainted kernel and broken bios

Nikola Pajkovsky npajkovs at fedoraproject.org
Fri Oct 7 14:45:46 UTC 2011


commit 926a045f87f7f9a79e325b814bd9937f30ea3d64
Author: Nikola Pajkovsky <npajkovs at redhat.com>
Date:   Fri Oct 7 16:46:15 2011 +0200

    dont send tainted kernel and broken bios
    
    Signed-off-by: Nikola Pajkovsky <npajkovs at redhat.com>

 0001-not-send-tainted-kernel-and-broken-bios.patch |  143 ++++++++++++++++++++
 abrt.spec                                          |   10 ++-
 2 files changed, 152 insertions(+), 1 deletions(-)
---
diff --git a/0001-not-send-tainted-kernel-and-broken-bios.patch b/0001-not-send-tainted-kernel-and-broken-bios.patch
new file mode 100644
index 0000000..d543014
--- /dev/null
+++ b/0001-not-send-tainted-kernel-and-broken-bios.patch
@@ -0,0 +1,143 @@
+From 446bc2d3798d34a4b552deea2ada35589286b2da Mon Sep 17 00:00:00 2001
+Message-Id: <446bc2d3798d34a4b552deea2ada35589286b2da.1317997521.git.npajkovs at redhat.com>
+From: Nikola Pajkovsky <npajkovs at redhat.com>
+Date: Fri, 7 Oct 2011 16:25:10 +0200
+Subject: [PATCH] not send tainted kernel and broken bios
+
+Signed-off-by: Nikola Pajkovsky <npajkovs at redhat.com>
+---
+ src/gui-gtk/main.c           |   12 +++++++-
+ src/plugins/abrt-dump-oops.c |   57 ++++++++++++++++++++---------------------
+ 2 files changed, 38 insertions(+), 31 deletions(-)
+
+diff --git a/src/gui-gtk/main.c b/src/gui-gtk/main.c
+index 2e45090..02a9cfc 100644
+--- a/src/gui-gtk/main.c
++++ b/src/gui-gtk/main.c
+@@ -73,13 +73,20 @@ static void add_directory_to_dirlist(const char *dirname)
+     );
+     const char *reported = (msg ? GTK_STOCK_YES : GTK_STOCK_NO);
+     free(msg);
+-    char *reason = dd_load_text(dd, FILENAME_REASON);
++
++    char *not_reportable_reason = dd_load_text_ext(dd, FILENAME_NOT_REPORTABLE, 0
++                                                   | DD_LOAD_TEXT_RETURN_NULL_ON_FAILURE
++                                                   | DD_FAIL_QUIETLY_ENOENT
++                                                   | DD_FAIL_QUIETLY_EACCES);
++    char *reason = NULL;
++    if (!not_reportable_reason)
++        reason = dd_load_text(dd, FILENAME_REASON);
+ 
+     GtkTreeIter iter;
+     gtk_list_store_append(s_dumps_list_store, &iter);
+     gtk_list_store_set(s_dumps_list_store, &iter,
+                           COLUMN_REPORTED, reported,
+-                          COLUMN_REASON, reason,
++                          COLUMN_REASON, not_reportable_reason? :reason,
+                           COLUMN_DIRNAME, dd->dd_dirname,
+                           //OPTION: time format
+                           COLUMN_LATEST_CRASH_STR, time_buf,
+@@ -87,6 +94,7 @@ static void add_directory_to_dirlist(const char *dirname)
+                           COLUMN_DUMP_DIR, dirname,
+                           -1);
+     free(reason);
++    free(not_reportable_reason);
+ 
+     dd_close(dd);
+     VERB1 log("added: %s", dirname);
+diff --git a/src/plugins/abrt-dump-oops.c b/src/plugins/abrt-dump-oops.c
+index b43d507..05c62b0 100644
+--- a/src/plugins/abrt-dump-oops.c
++++ b/src/plugins/abrt-dump-oops.c
+@@ -480,16 +480,6 @@ static unsigned save_oops_to_dump_dir(GList *oops_list, unsigned oops_cnt)
+ 
+     VERB1 log("Saving %u oopses as dump dirs", idx >= countdown ? countdown-1 : idx);
+ 
+-    char *tainted_str = NULL;
+-    FILE *tainted_fp = fopen("/proc/sys/kernel/tainted", "r");
+-    if (tainted_fp)
+-    {
+-        tainted_str = xmalloc_fgetline(tainted_fp);
+-        fclose(tainted_fp);
+-    }
+-    else
+-        perror_msg("Can't open '%s'", "/proc/sys/kernel/tainted");
+-
+     char *cmdline_str = NULL;
+     FILE *cmdline_fp = fopen("/proc/cmdline", "r");
+     if (cmdline_fp)
+@@ -535,27 +525,29 @@ static unsigned save_oops_to_dump_dir(GList *oops_list, unsigned oops_cnt)
+             if (cmdline_str)
+                 dd_save_text(dd, FILENAME_CMDLINE, cmdline_str);
+             dd_save_text(dd, FILENAME_BACKTRACE, second_line);
+-// TODO: add "Kernel oops: " prefix, so that all oopses have recognizable FILENAME_REASON?
+-// kernel oops 1st line may look quite puzzling otherwise...
+-            strchrnul(second_line, '\n')[0] = '\0';
+-            dd_save_text(dd, FILENAME_REASON, second_line);
+-
+-            if (tainted_str && tainted_str[0] != '0')
+-            {
+-                unsigned long tainted = xatoi_positive(tainted_str);
+-                char *tainted_short = kernel_tainted_short(tainted);
+-                GList *tainted_long = kernel_tainted_long(tainted);
+ 
+-                struct strbuf *tnt_long = strbuf_new();
+-                for (GList *li = tainted_long; li; li = li->next)
+-                    strbuf_append_strf(tnt_long, "%s\n", (char*) li->data);
++           /* check if trace doesn't have line: 'Your BIOS is broken' */
++            char *broken_bios = strstr(second_line, "Your BIOS is broken");
++            if (broken_bios)
++                dd_save_text(dd, FILENAME_NOT_REPORTABLE, "Your BIOS is broken");
+ 
+-                dd_save_text(dd, FILENAME_TAINTED, tainted_str);
++            char *tainted_short = kernel_tainted_short(second_line);
++            if (tainted_short)
++	    {
++                VERB1 log("Kernel is tainted '%s'", tainted_short);
+                 dd_save_text(dd, FILENAME_TAINTED_SHORT, tainted_short);
+-                dd_save_text(dd, FILENAME_TAINTED_LONG, tnt_long->buf);
+-                strbuf_free(tnt_long);
+-                list_free_with_free(tainted_long);
++                char *reason = xasprintf("Your kernel is tainted by flags '%s'. "
++                                         "Kernel maintainers are not interesting about "
++                                         "tainted kernel, because the trace might not be showing "
++                                         "the root problem."
++                                         , tainted_short);
++                dd_save_text(dd, FILENAME_NOT_REPORTABLE, reason);
++                free(reason);
+             }
++// TODO: add "Kernel oops: " prefix, so that all oopses have recognizable FILENAME_REASON?
++// kernel oops 1st line may look quite puzzling otherwise...
++            strchrnul(second_line, '\n')[0] = '\0';
++            dd_save_text(dd, FILENAME_REASON, second_line);
+ 
+             dd_close(dd);
+         }
+@@ -563,7 +555,6 @@ static unsigned save_oops_to_dump_dir(GList *oops_list, unsigned oops_cnt)
+             errors++;
+     }
+ 
+-    free(tainted_str);
+     free(cmdline_str);
+ 
+     return errors;
+@@ -711,7 +702,15 @@ int main(int argc, char **argv)
+             {
+                 int i = 0;
+                 while (i < oops_cnt)
+-                    printf("\nVersion: %s", (char*)g_list_nth_data(oops_list, i++));
++                {
++                    char *kernel_bt = (char*)g_list_nth_data(oops_list, i++);
++                    char *tainted_short = kernel_tainted_short(kernel_bt);
++                    if (tainted_short)
++                        log("Kernel is tainted '%s'", tainted_short);
++
++                    free(tainted_short);
++                    printf("\nVersion: %s", kernel_bt);
++                }
+             }
+             if (opts & OPT_d)
+             {
+-- 
+1.7.7.rc0.70.g82660
+
diff --git a/abrt.spec b/abrt.spec
index 3d154cf..5149f3b 100644
--- a/abrt.spec
+++ b/abrt.spec
@@ -10,7 +10,7 @@
 Summary: Automatic bug detection and reporting tool
 Name: abrt
 Version: 2.0.3
-Release: 4%{?dist}
+Release: 5%{?dist}
 License: GPLv2+
 Group: Applications/System
 URL: https://fedorahosted.org/abrt/
@@ -27,6 +27,7 @@ Patch7: 0006-rhbz-671354-RFE-Configurable-core-dump-location.patch
 Patch8: 0007-abrtd-pipe-post-create-output-to-log.-Closes-bz-6991.patch
 Patch9: 0001-a-a-save-package-data-Fix-NULL-dereference.patch
 Patch10: 0001-Fix-free-space-checking.patch
+Patch11: 0001-not-send-tainted-kernel-and-broken-bios.patch
 BuildRequires: dbus-devel
 BuildRequires: gtk2-devel
 BuildRequires: curl-devel
@@ -226,6 +227,7 @@ Virtual package to make easy default installation on desktop environments.
 %patch8 -p1 -b .abrtd-pipe-post-create-output-to-log.-Closes-bz-6991.patch
 %patch9 -p1 -b .a-a-save-package-data-Fix-NULL-dereference.patch
 %patch10 -p1 -b .Fix-free-space-checking.patch
+%patch11 -p1
 
 %build
 autoconf
@@ -527,6 +529,12 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 %defattr(-,root,root,-)
 
 %changelog
+* Fri Oct 07 2011 Nikola Pajkovsky <npajkovs at redhat.com> - 2.0.3-5
+- don't file kernel bugs if "tainted: B" is set.
+- don't file bugs about BIOS bugs.
+- incorrect TAINTED description in bugs.
+- Resoves: #718097 #708534 724838
+
 * Tue Sep 13 2011 Nikola Pajkovsky <npajkovs at redhat.com> 2.0.3-4
 - fixed sigsegv in a-a-save-package-data rhbz#737961
 - fixed privs for /var/run/abrt rhbz#725974


More information about the scm-commits mailing list