Server IP : 104.21.38.3 / Your IP : 172.71.81.233 Web Server : Apache System : Linux krdc-ubuntu-s-2vcpu-4gb-amd-blr1-01.localdomain 5.15.0-142-generic #152-Ubuntu SMP Mon May 19 10:54:31 UTC 2025 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/perl5/NeedRestart/uCode/ |
Upload File : |
# needrestart - Restart daemons after library updates. # # Authors: # Thomas Liske <[email protected]> # # Copyright Holder: # 2013 - 2020 (C) Thomas Liske [http://fiasko-nw.net/~thomas/] # # License: # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package NeedRestart::uCode::Intel; use strict; use warnings; use NeedRestart::uCode; use NeedRestart::Utils; use POSIX qw(uname); use Locale::TextDomain 'needrestart'; use constant { NRM_INTEL_HELPER => q(/usr/lib/needrestart/iucode-scan-versions), }; my $LOGPREF = '[uCode/Intel]'; sub nr_ucode_init { my ( $sysname, $nodename, $release, $version, $machine ) = uname; my $is_x86 = ( $machine =~ /^(i\d86|x86_64)$/ ); die "$LOGPREF Not running on x86!\n" unless ($is_x86); die "$LOGPREF iucode-tool not available!\n" unless (`which iucode_tool`); } my $_avail; sub nr_ucode_check_real { my $debug = shift; my $ui = shift; my $info = shift; my %vars; # get current microcode revision if ( defined( $info->{microcode} ) ) { $vars{CURRENT} = sprintf( "0x%04x", hex( $info->{microcode} ) ); print STDERR "$LOGPREF #$info->{processor} current revision: $vars{CURRENT}\n" if ($debug); } else { print STDERR "$LOGPREF #$info->{processor} current microcode revision not found in /proc/cpuinfo: $!\n" if ($debug); return ( NRM_UNKNOWN, %vars ); } # find and cache microcode updates unless ( defined($_avail) ) { my $fh = nr_fork_pipe( $debug, NRM_INTEL_HELPER, $debug ); while (<$fh>) { if (/\s*\d+(\/\d+)?: sig.+, rev (0x[\da-f]+),/) { $_avail = sprintf( "0x%04x", hex($2) ); print STDERR "$LOGPREF #$info->{processor} available revision: $2\n" if ($debug); next; } } close($fh); } $vars{AVAIL} = $_avail if ( defined($_avail) ); unless ( exists( $vars{CURRENT} ) && exists( $vars{AVAIL} ) ) { print STDERR "$LOGPREF #$info->{processor} did not get current microcode version\n" if ( $debug && !exists( $vars{CURRENT} ) ); print STDERR "$LOGPREF #$info->{processor} did not get available microcode version\n" if ( $debug && !exists( $vars{AVAIL} ) ); return ( NRM_UNKNOWN, %vars ); } if ( hex( $vars{CURRENT} ) >= hex( $vars{AVAIL} ) ) { return ( NRM_CURRENT, %vars ); } return ( NRM_OBSOLETE, %vars ); } 1;