m/n/core/devmgr: load modules in separate goroutines

If we spend too much time processing kobject uevents, we get an ENOBUFS
error:

  root.devmgr: error receiving kobject uevent: no buffer space available

This is a hot-fix for this issue. A better solution would be to have a
single goroutine that handles all loading in order to avoid goroutine
leaks. But this will do for now.

Change-Id: Id085e1e489760c33b1f278dd7c17bf58c01bdad8
Reviewed-on: https://review.monogon.dev/c/monogon/+/1877
Tested-by: Jenkins CI
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/node/core/devmgr/devmgr.go b/metropolis/node/core/devmgr/devmgr.go
index fc626b0..8133c77 100644
--- a/metropolis/node/core/devmgr/devmgr.go
+++ b/metropolis/node/core/devmgr/devmgr.go
@@ -69,9 +69,11 @@
 		}
 		if e.Action == kobject.Add {
 			if e.Values["MODALIAS"] != "" {
-				if err := modMgr.LoadModulesForDevice(e.Values["MODALIAS"]); err != nil {
-					l.Errorf("Error loading kernel modules: %w", err)
-				}
+				go func(e *kobject.Event) {
+					if err := modMgr.LoadModulesForDevice(e.Values["MODALIAS"]); err != nil {
+						l.Errorf("Error loading kernel modules: %w", err)
+					}
+				}(e)
 			}
 		}
 	}