• Hans de Goede's avatar
    iommu/vt-d: dmar: replace WARN_TAINT with pr_warn + add_taint · 59833696
    Hans de Goede authored
    Quoting from the comment describing the WARN functions in
    include/asm-generic/bug.h:
    
     * WARN(), WARN_ON(), WARN_ON_ONCE, and so on can be used to report
     * significant kernel issues that need prompt attention if they should ever
     * appear at runtime.
     *
     * Do not use these macros when checking for invalid external inputs
    
    The (buggy) firmware tables which the dmar code was calling WARN_TAINT
    for really are invalid external inputs. They are not under the kernel's
    control and the issues in them cannot be fixed by a kernel update.
    So logging a backtrace, which invites bug reports to be filed about this,
    is not helpful.
    
    Some distros, e.g. Fedora, have tools watching for the kernel backtraces
    logged by the WARN macros and offer the user an option to file a bug for
    this when these are encountered. The WARN_TAINT in warn_invalid_dmar()
    + another iommu WARN_TAINT, addressed in another patch, have lead to over
    a 100 bugs being filed this way.
    
    This commit replaces the WARN_TAINT("...") calls, with
    pr_warn(FW_BUG "...") + add_taint(TAINT_FIRMWARE_WORKAROUND, ...) calls
    avoiding the backtrace and thus also avoiding bug-reports being filed
    about this against the kernel.
    
    Fixes: fd0c8894 ("intel-iommu: Set a more specific taint flag for invalid BIOS DMAR tables")
    Fixes: e625b4a9 ("iommu/vt-d: Parse ANDD records")
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    Acked-by: default avatarLu Baolu <baolu.lu@linux.intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20200309140138.3753-2-hdegoede@redhat.com
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1564895
    59833696
dmar.c 55.6 KB