Bug 120624

Summary: mkinitrd fails with some kernel names
Product: [Fedora] Fedora Reporter: Luigi Iotti <luigi>
Component: mkinitrdAssignee: Peter Jones <pjones>
Status: CLOSED CURRENTRELEASE QA Contact: David Lawrence <dkl>
Severity: medium Docs Contact:
Priority: medium    
Version: 1CC: mattdm
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: 3.5.20 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2006-10-25 20:32:40 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Luigi Iotti 2004-04-12 12:30:19 UTC
Description of problem:
If the kernel for which mkinitrd is being performed has ".o" 
(or ".ko") in its name (for example, "2.4.22.nptl.openswan.1.0.3"), 
mkinitrd fails to include the correct modules in the initrd image.

This because mkinitrd in the function moduledep issues the 
command "match(filename, /\/([^\/]+)\.k?o/, ret)". The regular 
expression should match the name of the module in strigs found in the 
modules.dep file, for ex.:
/lib/modules/2.4.22-1.2174.nptl/kernel/fs/ext3/ext3.o:
/lib/modules/2.4.22-1.2174.nptl/kernel/fs/jbd/jbd.o

The ".k?o" in the regexp should match the ".o" or ".ko" in the module 
file name: but if the kernel name contains ".o" or ".ko" in its name 
the match, which is done leftmost, fails to catch the module name.
In my case, I need ext3.o in my initrd which depends on jbd.o. If and 
only if my kernel name has ".o" (or ".ko") in it, jbd.o is not 
included in the initrd.

Patch to fix the problem:

--- mkinitrd.orig       2004-08-07 18:05:45.000000000 +0200
+++ mkinitrd    2004-08-07 18:06:17.000000000 +0200
@@ -65,7 +65,7 @@
 
     [ -n "$verbose" ] && echo -n "Looking for deps of module $1"
     deps=$(awk 'BEGIN { searched=ARGV[2]; ARGV[2]=""; rc=1 } \
-                function modname(filename) { match(filename, /\/
([^\/]+)\.k?o/, ret); return ret[1] } \
+                function modname(filename) { match(filename, /\/
([^\/]+)\.k?o:?$/, ret); return ret[1] } \
                 function show() { if (orig == searched) { print dep; 
orig=""; rc=0; exit } } \
                 /^\/lib/ { show(); \
                            orig=modname($1); \

Version-Release number of selected component (if applicable):
mkinitrd-3.5.14-1

How reproducible:
always

Steps to Reproduce:
1. Build a kernel with .o in its name on a system where initrd is 
needed, with a module to be included in it that depends on another 
module
2. mkinitrd . Notice that the needed module is not included
3. 
  
Actual results:


Expected results:


Additional info:

Comment 1 Jeremy Katz 2004-04-13 04:04:02 UTC
Applied in CVS, will be in 3.5.20 

Comment 2 Matthew Miller 2006-07-11 17:45:54 UTC
Fedora Core 1 is maintained by the Fedora Legacy project for security updates
only. If this problem is a security issue, please reopen and reassign to the
Fedora Legacy product. If it is not a security issue and hasn't been resolved in
the current FC5 updates or in the FC6 test release, reopen and change the
version to match.

Thanks!

NOTE: Fedora Core 1 is reaching the final end of support even by the Legacy
project. After Fedora Core 6 Test 2 is released (currently scheduled for July
26th), there will be no more security updates for FC1. Please use these next two
weeks to upgrade any remaining FC1 systems to a current release.



Comment 3 John Thacker 2006-10-25 20:32:40 UTC
Closing per lack of response.  Also note that FC1 and FC2 are no longer
supported even by Fedora Legacy.  If this still occurs on FC3 or FC4, please
assign to that version and Fedora Legacy.  If it still occurs on FC5 or FC6,
please reopen and assign to the correct version.

Should be fixed, though.

Comment 4 Fedora Update System 2015-03-27 19:00:10 UTC
libwebp-0.4.3-2.fc21 has been submitted as an update for Fedora 21.
https://admin.fedoraproject.org/updates/libwebp-0.4.3-2.fc21