modprobe: add scanning of /lib/modules/`uname -r`/modules.symbols
  (by Yann E. MORIN)

diff --git a/modutils/modprobe.c b/modutils/modprobe.c
index 3861dd1..fe399ac 100644
--- a/modutils/modprobe.c
+++ b/modutils/modprobe.c
@@ -504,7 +504,7 @@
 
 	/* Only 2.6 has a modules.alias file */
 	if (ENABLE_FEATURE_2_6_MODULES) {
-		/* Parse kernel-declared aliases */
+		/* Parse kernel-declared module aliases */
 		filename = xasprintf("/lib/modules/%s/modules.alias", un.release);
 		fd = open(filename, O_RDONLY);
 		if (fd < 0) {
@@ -518,6 +518,21 @@
 			include_conf(&first, &current, buffer, sizeof(buffer), fd);
 			close(fd);
 		}
+
+		/* Parse kernel-declared symbol aliases */
+		filename = xasprintf("/lib/modules/%s/modules.symbols", un.release);
+		fd = open(filename, O_RDONLY);
+		if (fd < 0) {
+			/* Ok, that didn't work.  Fall back to looking in /lib/modules */
+			fd = open("/lib/modules/modules.symbols", O_RDONLY);
+		}
+		if (ENABLE_FEATURE_CLEAN_UP)
+			free(filename);
+
+		if (fd >= 0) {
+			include_conf(&first, &current, buffer, sizeof(buffer), fd);
+			close(fd);
+		}
 	}
 
 	return first;