Bug 120624 - mkinitrd fails with some kernel names
Summary: mkinitrd fails with some kernel names
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: mkinitrd
Version: 1
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Peter Jones
QA Contact: David Lawrence
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2004-04-12 12:30 UTC by Luigi Iotti
Modified: 2015-03-27 19:00 UTC (History)
1 user (show)

Fixed In Version: 3.5.20
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2006-10-25 20:32:40 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

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


Note You need to log in before you can comment on or make changes to this bug.