Skip to content

Commit f80f06a

Browse files
Fixing FIRWARE files/directories loading (kubernetes-sigs#302)
Currently the firmware path defined in the Module CR is copied into the /var/lib/firmware host path, including the the rightmost directory. Since customed firmware base loading directory for kernel modules is /var/lib/firmware, it means that kernel modules that are expecting their firmware to be located unnder base path (/var/lib/firmware) cannot be run, since current implementation will always contain at leas one additional directory under /var/lib/firmware. This PR changes implementation, so that, if needed, firmware file can be copied directly under the base path (/var/lib/firmware)
1 parent 9a3e98d commit f80f06a

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

internal/daemonset/daemonset.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ func MakeLoadCommand(spec kmmv1beta1.ModprobeSpec, modName string) []string {
366366
var loadCommand strings.Builder
367367

368368
if fw := spec.FirmwarePath; fw != "" {
369-
fmt.Fprintf(&loadCommand, "cp -r %s %s && ", fw, nodeVarLibFirmwarePath)
369+
fmt.Fprintf(&loadCommand, "cp -r %s/* %s && ", fw, nodeVarLibFirmwarePath)
370370
}
371371

372372
loadCommand.WriteString("modprobe")
@@ -415,7 +415,7 @@ func MakeUnloadCommand(spec kmmv1beta1.ModprobeSpec, modName string) []string {
415415

416416
fwUnloadCommand := ""
417417
if fw := spec.FirmwarePath; fw != "" {
418-
fwUnloadCommand = fmt.Sprintf(" && cd %s && find |sort -r |xargs -I{} rm -d %s/$(basename %s)/{}", fw, nodeVarLibFirmwarePath, fw)
418+
fwUnloadCommand = fmt.Sprintf(" && cd %s && find |sort -r |xargs -I{} rm -d %s/{}", fw, nodeVarLibFirmwarePath)
419419
}
420420

421421
if rawArgs := spec.RawArgs; rawArgs != nil && len(rawArgs.Unload) > 0 {

internal/daemonset/daemonset_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -922,7 +922,7 @@ var _ = Describe("MakeLoadCommand", func() {
922922
Equal([]string{
923923
"/bin/sh",
924924
"-c",
925-
fmt.Sprintf("cp -r /kmm/firmware/mymodule /var/lib/firmware && modprobe -v %s", kernelModuleName),
925+
fmt.Sprintf("cp -r /kmm/firmware/mymodule/* /var/lib/firmware && modprobe -v %s", kernelModuleName),
926926
}),
927927
)
928928
})
@@ -1003,7 +1003,7 @@ var _ = Describe("MakeUnloadCommand", func() {
10031003
Equal([]string{
10041004
"/bin/sh",
10051005
"-c",
1006-
fmt.Sprintf("modprobe -rv %s && cd /kmm/firmware/mymodule && find |sort -r |xargs -I{} rm -d /var/lib/firmware/$(basename /kmm/firmware/mymodule)/{}", kernelModuleName),
1006+
fmt.Sprintf("modprobe -rv %s && cd /kmm/firmware/mymodule && find |sort -r |xargs -I{} rm -d /var/lib/firmware/{}", kernelModuleName),
10071007
}),
10081008
)
10091009
})

0 commit comments

Comments
 (0)