diff -urpN busybox-1.14.0/modutils/modprobe.c busybox-1.14.0-modprobe/modutils/modprobe.c
--- busybox-1.14.0/modutils/modprobe.c	2009-04-14 01:42:55.000000000 +0200
+++ busybox-1.14.0-modprobe/modutils/modprobe.c	2009-05-27 12:02:34.000000000 +0200
@@ -109,7 +109,9 @@ static void add_probe(const char *name)
 	struct module_entry *m;
 
 	m = get_or_add_modentry(name);
-	if (m->flags & MODULE_FLAG_LOADED) {
+	if (!(option_mask32 & MODPROBE_OPT_REMOVE)
+	 && (m->flags & MODULE_FLAG_LOADED)
+	) {
 		DBG("skipping %s, it is already loaded", name);
 		return;
 	}
@@ -339,7 +341,7 @@ int modprobe_main(int argc UNUSED_PARAM,
 		config_close(parser);
 	}
 
-	if (opt & MODPROBE_OPT_INSERT_ALL) {
+	if (opt & (MODPROBE_OPT_INSERT_ALL | MODPROBE_OPT_REMOVE)) {
 		/* Each argument is a module name */
 		do {
 			add_probe(*argv++);
