--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -139,7 +139,7 @@ int insmod_main(int argc, char **argv) M
 int insmod_main(int argc UNUSED_PARAM, char **argv)
 {
 	char *filename;
-	int rc;
+	int rc, opt;
 
 	/* Compat note:
 	 * 2.6 style insmod has no options and required filename
@@ -149,10 +149,8 @@ int insmod_main(int argc UNUSED_PARAM, c
 	 * or in $MODPATH.
 	 */
 
-	IF_FEATURE_2_4_MODULES(
-		getopt32(argv, INSMOD_OPTS INSMOD_ARGS);
-		argv += optind - 1;
-	);
+	opt = getopt32(argv, INSMOD_OPTS, NULL, NULL);
+	argv += optind - 1;
 
 	filename = *++argv;
 	if (!filename)
@@ -163,7 +161,7 @@ int insmod_main(int argc UNUSED_PARAM, c
 		goto done;
 
 	rc = bb_init_module(g_filename, parse_cmdline_module_options(argv, /*quote_spaces:*/ 0));
-	if (rc)
+	if (rc && !(opt & INSMOD_OPT_SILENT))
 		bb_error_msg("can't insert '%s': %s", filename, moderror(rc));
 	free (g_filename);