From a0756a5f1d89533eb08f68713f9a6777a1b8e511 Mon Sep 17 00:00:00 2001 From: Josh Poimboeuf Date: Tue, 29 Jul 2014 17:02:10 -0500 Subject: [PATCH 1/2] kpatch-build: convert spaces in patch name to '-' --- kpatch-build/kpatch-build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build index 3929035..a48b3cf 100755 --- a/kpatch-build/kpatch-build +++ b/kpatch-build/kpatch-build @@ -250,7 +250,7 @@ fi [[ -z $TARGETS ]] && TARGETS="vmlinux modules" -PATCHNAME="$(basename $PATCHFILE)" +PATCHNAME=$(basename "$PATCHFILE") if [[ "$PATCHNAME" =~ \.patch ]] || [[ "$PATCHNAME" =~ \.diff ]]; then PATCHNAME="${PATCHNAME%.*}" fi From 4f91924d7ebe04bb272d1ec95c60baadb0bb5e6d Mon Sep 17 00:00:00 2001 From: Josh Poimboeuf Date: Tue, 29 Jul 2014 17:02:48 -0500 Subject: [PATCH 2/2] kpatch-build: truncate long patch names Otherwise the module name listed in /proc/modules is corrupted due to an array buffer overrun. --- kpatch-build/kpatch-build | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build index a48b3cf..da02d82 100755 --- a/kpatch-build/kpatch-build +++ b/kpatch-build/kpatch-build @@ -255,9 +255,10 @@ if [[ "$PATCHNAME" =~ \.patch ]] || [[ "$PATCHNAME" =~ \.diff ]]; then PATCHNAME="${PATCHNAME%.*}" fi -# Only allow alphanumerics and '_' and '-' in the module name. -# Everything else is replaced with '-'. -PATCHNAME=${PATCHNAME//[^a-zA-Z0-9_-]/-} +# Only allow alphanumerics and '_' and '-' in the module name. Everything else +# is replaced with '-'. Also truncate to 48 chars so the full name fits in the +# kernel's 56-byte module name array. +PATCHNAME=$(echo ${PATCHNAME//[^a-zA-Z0-9_-]/-} |cut -c 1-48) find_dirs || die "can't find supporting tools"