Skip to content

Commit 0f3f8ae

Browse files
committed
Merge pull request #192 from jpoimboe/vmlinux-mismatch
kpatch-build: use original vmlinux
2 parents bf4be47 + 5c98ec6 commit 0f3f8ae

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ Install the dependencies for the "kpatch-build" command:
3131

3232
sudo yum install rpmdevtools pesign yum-utils
3333
sudo yum-builddep kernel
34+
sudo debuginfo-install kernel
3435

3536
# optional, but highly recommended
3637
sudo yum install ccache

kpatch-build/kpatch-build

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ usage() {
8888
echo " -r, --sourcerpm Specify kernel source RPM" >&2
8989
echo " -s, --sourcedir Specify kernel source directory" >&2
9090
echo " -c, --config Specify kernel config file" >&2
91+
echo " -v, --vmlinux Specify original vmlinux" >&2
9192
echo " -d, --debug Keep scratch files in /tmp" >&2
9293
}
9394

@@ -119,6 +120,11 @@ while [[ $# -gt 0 ]]; do
119120
shift
120121
[[ ! -f "$CONFIGFILE" ]] && die "config file $CONFIGFILE not found"
121122
;;
123+
-v|--vmlinux)
124+
VMLINUX=$(readlink -f "$2")
125+
shift
126+
[[ ! -f "$VMLINUX" ]] && die "vmlinux file $VMLINUX not found"
127+
;;
122128
-d|--debug)
123129
echo "DEBUG mode enabled"
124130
DEBUG=1
@@ -158,6 +164,9 @@ find_dirs || die "can't find supporting tools"
158164

159165
[[ -e "$SYMVERSFILE" ]] || die "can't find core module Module.symvers"
160166

167+
[[ -z $VMLINUX ]] && VMLINUX=/usr/lib/debug/lib/modules/${ARCHVERSION}/vmlinux
168+
[[ -e "$VMLINUX" ]] || die "kernel-debuginfo not installed"
169+
161170
if [[ -n "$USERSRCDIR" ]]; then
162171
SRCDIR="$CACHEDIR/src"
163172
OBJDIR="$CACHEDIR/obj"
@@ -209,6 +218,7 @@ else
209218
elif [[ $ID = ubuntu ]]; then
210219

211220
echo "Debian/Ubuntu distribution detected"
221+
212222
cd $TEMPDIR
213223
echo "Downloading and unpacking kernel source for $ARCHVERSION"
214224
apt-get source linux || die "'apt-get source linux' failed. you may need to run 'apt-get install dpkg-dev'"
@@ -234,7 +244,6 @@ echo "Building original kernel"
234244
make mrproper >> "$LOGFILE" 2>&1 || die
235245
make "-j$CPUS" vmlinux "O=$OBJDIR" >> "$LOGFILE" 2>&1 || die
236246
cp -LR "$DATADIR/patch" "$TEMPDIR" || die
237-
cp "$OBJDIR/vmlinux" "$TEMPDIR" || die
238247

239248
echo "Building patched kernel"
240249
patch -N -p1 < "$APPLIEDPATCHFILE" >> "$LOGFILE" 2>&1 || die
@@ -286,10 +295,10 @@ make prepare >> "$LOGFILE" 2>&1 || die
286295
cd "$TEMPDIR/output"
287296
ld -r -o ../patch/output.o $FILES >> "$LOGFILE" 2>&1 || die
288297
cd "$TEMPDIR/patch"
289-
"$TOOLSDIR"/add-patches-section output.o ../vmlinux >> "$LOGFILE" 2>&1 || die
298+
"$TOOLSDIR"/add-patches-section output.o "$VMLINUX" >> "$LOGFILE" 2>&1 || die
290299
KPATCH_BUILD="$SRCDIR" KPATCH_NAME="$PATCHNAME" KBUILD_EXTRA_SYMBOLS="$SYMVERSFILE" make "O=$OBJDIR" >> "$LOGFILE" 2>&1 || die
291300
$STRIPCMD "kpatch-$PATCHNAME.ko" >> "$LOGFILE" 2>&1 || die
292-
"$TOOLSDIR"/link-vmlinux-syms "kpatch-$PATCHNAME.ko" ../vmlinux >> "$LOGFILE" 2>&1 || die
301+
"$TOOLSDIR"/link-vmlinux-syms "kpatch-$PATCHNAME.ko" "$VMLINUX" >> "$LOGFILE" 2>&1 || die
293302

294303
cp -f "$TEMPDIR/patch/kpatch-$PATCHNAME.ko" "$BASE" || die
295304

0 commit comments

Comments
 (0)