diff --git a/wireless-tools/ifrename.c b/wireless-tools/ifrename.c
index 9a29d17..2d5c190 100644
--- a/wireless-tools/ifrename.c
+++ b/wireless-tools/ifrename.c
@@ -2045,6 +2045,7 @@ mapping_readfile(const char *	filename)
   size_t		linelen = 0; 
   int			linenum = 0; 
   struct add_extra	extrainfo;
+  int			config_fd;
 
   /* Reset the list of filters */
   bzero(selector_active, sizeof(selector_active));
@@ -2066,6 +2067,22 @@ mapping_readfile(const char *	filename)
 		  filename, strerror(errno)); 
 	  return(-1);
 	}
+
+      /* Open the config file for locking */
+      if ((config_fd = open(filename, O_RDONLY)) == -1)
+        {
+	  fprintf(stderr, "Error: Can't open configuration file `%s': %s\n",
+		  filename, strerror(errno));
+	  return(-1);
+        }
+
+      /* Lock config file */
+      if (flock(config_fd, LOCK_EX) == -1)
+        {
+          fprintf(stderr, "Error: Can't lock configuration file `%s': %s\n",
+		  filename, strerror(errno));
+	  return(-1);
+        }
     }
 
   /* Read each line of file