libbb: [x]fopen_for_{read,write} introduced and used.
 (by Valdimir)

function                                             old     new   delta
config_open2                                           -      41     +41
config_read                                          507     542     +35
find_pair                                            169     187     +18
fopen_for_write                                        -      14     +14
fopen_for_read                                         -      14     +14
find_main                                            406     418     +12
xfopen_for_write                                       -      10     +10
xfopen_for_read                                        -      10     +10
popstring                                            134     140      +6
parse_inittab                                        396     401      +5
next_token                                           923     928      +5
pack_gzip                                           1659    1661      +2
bb__parsespent                                       117     119      +2
fallbackSort                                        1719    1717      -2
evalvar                                             1376    1374      -2
qrealloc                                              36      33      -3
...
...
...
...
singlemount                                         4579    4569     -10
process_stdin                                        443     433     -10
patch_main                                          1111    1101     -10
ifupdown_main                                       2175    2165     -10
file_action_grep                                      90      80     -10
uuidcache_init                                       649     637     -12
hush_main                                            797     785     -12
read_config                                          230     217     -13
dpkg_main                                           3835    3820     -15
read_line_input                                     3134    3110     -24
sysctl_main                                          232     203     -29
config_open                                           40      10     -30
WARN_BAD_LINE                                         44       -     -44
login_main                                          1714    1575    -139
------------------------------------------------------------------------------
(add/remove: 5/1 grow/shrink: 8/74 up/down: 174/-737)        Total: -563 bytes


diff --git a/modutils/insmod.c b/modutils/insmod.c
index 97f4a87..9dcc5b0 100644
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -3992,7 +3992,7 @@
 
 	/* Get a filedesc for the module.  Check that we have a complete path */
 	if (stat(arg1, &st) < 0 || !S_ISREG(st.st_mode)
-	 || (fp = fopen(arg1, "r")) == NULL
+	 || (fp = fopen_for_read(arg1)) == NULL
 	) {
 		/* Hmm.  Could not open it.  First search under /lib/modules/`uname -r`,
 		 * but do not error out yet if we fail to find it... */
@@ -4016,7 +4016,7 @@
 		}
 
 		/* Check if we have found anything yet */
-		if (!m_filename || ((fp = fopen(m_filename, "r")) == NULL)) {
+		if (!m_filename || ((fp = fopen_for_read(m_filename)) == NULL)) {
 			int r;
 			char *module_dir;
 
@@ -4033,7 +4033,7 @@
 				bb_error_msg_and_die("%s: module not found", m_fullName);
 			free(module_dir);
 			if (m_filename == NULL
-			 || ((fp = fopen(m_filename, "r")) == NULL)
+			 || ((fp = fopen_for_read(m_filename)) == NULL)
 			) {
 				bb_error_msg_and_die("%s: module not found", m_fullName);
 			}