Control: tags -1 +patch On 2023-11-15 14:54:26, Antoine Beaupré wrote: > On 2022-06-20 13:54:38, Nick Lewycky wrote: >> Package: needrestart >> Version: 3.6-1 >> Severity: normal >> >> `sudo needrestart -w` always prints "Failed to check for processor >> microcode upgrades." on my AMD Ryzen 9 3900X 12-Core Processor. > > [...] > > There's now a PR for this upstream: > > https://github.com/liske/needrestart/pull/285 > > People suffering from this issue are encouraged to test this and report > back upstream (or here, if you can't upstream).
I tested it and it doesn't work. It only *seemed* to work because the author tested with -v, which *does* work around the issue. I found the issue, and sent this PR upstream to fix it: https://github.com/liske/needrestart/pull/288 Patch attached, people are again encouraged to test and report back. I also attach upstream commit v3.6-9-ge85bfe3 which also seem necessary to fix firmware checks on my end... a. -- Advertisers, not governments, are the primary censors of media content in the United States today. - C. Edwin Baker
>From b073fb6d9969597173daa8c511a85bae9b03ed37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= <anar...@debian.org> Date: Wed, 15 Nov 2023 15:20:37 -0500 Subject: [PATCH] fix AMD ucode checking in non-debug mode It looks like the assignment when the ucode exist was not done *unless* `debug` (`-v`) was set. Therefore, all AMD microcode checks were returning UNKNOWN, including in Nagios checks, unless the `-v` ("verbose", but actually `debug`) was passed. Closes: #249 --- perl/lib/NeedRestart/uCode/AMD.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/perl/lib/NeedRestart/uCode/AMD.pm b/perl/lib/NeedRestart/uCode/AMD.pm index 638e68d..6daad8f 100644 --- a/perl/lib/NeedRestart/uCode/AMD.pm +++ b/perl/lib/NeedRestart/uCode/AMD.pm @@ -185,8 +185,8 @@ sub nr_ucode_check_real { if ( exists( $_ucodes->{cpuid}->{$cpuid} ) ) { my $prid = $_ucodes->{cpuid}->{$cpuid}; if ( exists( $_ucodes->{prid}->{$prid} ) ) { - $vars{AVAIL} = sprintf( "0x%08x", $_ucodes->{prid}->{$prid} ), - print STDERR "$LOGPREF #$info->{processor} found ucode $vars{AVAIL}\n" if ($debug); + $vars{AVAIL} = sprintf( "0x%08x", $_ucodes->{prid}->{$prid} ); + print STDERR "$LOGPREF #$info->{processor} found ucode $vars{AVAIL}\n" if ($debug); } } -- 2.39.2
>From e85bfe33b595b88cc8052a7815d13612ecc2a841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20B=C3=BChler?= <sou...@stbuehler.de> Date: Sun, 28 May 2023 17:42:28 +0200 Subject: [PATCH] [uCode] fix uninitialized value in logging of processor index This got broken in f8c2609f8d5a0e10bd988497b8ea9815a7bb2fa8. Before that it would have effectively logged `$processors{$pid}->{processor}`, but the `processor` entry is also the key in `%processors`, i.e. equals `$pid`. --- perl/lib/NeedRestart/uCode.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perl/lib/NeedRestart/uCode.pm b/perl/lib/NeedRestart/uCode.pm index 6251339..db81375 100644 --- a/perl/lib/NeedRestart/uCode.pm +++ b/perl/lib/NeedRestart/uCode.pm @@ -148,7 +148,7 @@ sub nr_ucode_check { } $ui->progress_step; - my $nstate = compare_ucode_versions( $debug, $processors{processor}, @nvars ); + my $nstate = compare_ucode_versions( $debug, $pid, @nvars ); if ( $nstate > $state ) { ( $state, @vars ) = ( $nstate, @nvars ); } -- 2.39.2