diff --git a/src/core/ngx_file.c b/src/core/ngx_file.c
index 3efa900..2c365a8 100644
--- a/src/core/ngx_file.c
+++ b/src/core/ngx_file.c
@@ -19,7 +19,7 @@
 
     if (tf->file.fd == NGX_INVALID_FILE) {
         rc = ngx_create_temp_file(&tf->file, tf->path, tf->pool,
-                                  tf->persistent, tf->mode);
+                                  tf->persistent, tf->access);
 
         if (rc == NGX_ERROR || rc == NGX_AGAIN) {
             return rc;
@@ -37,7 +37,7 @@
 
 ngx_int_t
 ngx_create_temp_file(ngx_file_t *file, ngx_path_t *path, ngx_pool_t *pool,
-    ngx_uint_t persistent, ngx_uint_t mode)
+    ngx_uint_t persistent, ngx_uint_t access)
 {
     ngx_err_t                 err;
     ngx_atomic_uint_t         n;
@@ -72,7 +72,7 @@
             return NGX_ERROR;
         }
 
-        file->fd = ngx_open_tempfile(file->name.data, persistent, mode);
+        file->fd = ngx_open_tempfile(file->name.data, persistent, access);
 
         ngx_log_debug1(NGX_LOG_DEBUG_CORE, file->log, 0,
                        "temp fd:%d", file->fd);
diff --git a/src/core/ngx_file.h b/src/core/ngx_file.h
index 71c9931..f8107ae 100644
--- a/src/core/ngx_file.h
+++ b/src/core/ngx_file.h
@@ -49,7 +49,7 @@
     ngx_pool_t         *pool;
     char               *warn;
 
-    ngx_uint_t          mode;
+    ngx_uint_t          access;
 
     unsigned            log_level:8;
     unsigned            persistent:1;
@@ -76,7 +76,7 @@
 
 ssize_t ngx_write_chain_to_temp_file(ngx_temp_file_t *tf, ngx_chain_t *chain);
 ngx_int_t ngx_create_temp_file(ngx_file_t *file, ngx_path_t *path,
-    ngx_pool_t *pool, ngx_uint_t persistent,ngx_uint_t mode);
+    ngx_pool_t *pool, ngx_uint_t persistent,ngx_uint_t access);
 void ngx_create_hashed_filename(ngx_file_t *file, ngx_path_t *path);
 ngx_int_t ngx_create_path(ngx_file_t *file, ngx_path_t *path);
 ngx_err_t ngx_create_full_path(u_char *dir, ngx_uint_t access);
diff --git a/src/http/ngx_http_request_body.c b/src/http/ngx_http_request_body.c
index f5aa272..f5f8275 100644
--- a/src/http/ngx_http_request_body.c
+++ b/src/http/ngx_http_request_body.c
@@ -74,13 +74,13 @@
             tf->persistent = r->request_body_in_persistent_file;
 
             if (r->request_body_file_group_access) {
-                tf->mode = 0660;
+                tf->access = 0660;
             }
 
             rb->temp_file = tf;
 
             if (ngx_create_temp_file(&tf->file, tf->path, tf->pool,
-                                     tf->persistent, tf->mode)
+                                     tf->persistent, tf->access)
                 != NGX_OK)
             {
                 return NGX_HTTP_INTERNAL_SERVER_ERROR;
@@ -400,7 +400,7 @@
         tf->persistent = r->request_body_in_persistent_file;
 
         if (r->request_body_file_group_access) {
-            tf->mode = 0660;
+            tf->access = 0660;
         }
 
         rb->temp_file = tf;
diff --git a/src/os/unix/ngx_files.c b/src/os/unix/ngx_files.c
index 50db532..a091b9b 100644
--- a/src/os/unix/ngx_files.c
+++ b/src/os/unix/ngx_files.c
@@ -112,11 +112,12 @@
 
 
 ngx_fd_t
-ngx_open_tempfile(u_char *name, ngx_uint_t persistent, ngx_uint_t mode)
+ngx_open_tempfile(u_char *name, ngx_uint_t persistent, ngx_uint_t access)
 {
     ngx_fd_t  fd;
 
-    fd = open((const char *) name, O_CREAT|O_EXCL|O_RDWR, mode ? mode : 0600);
+    fd = open((const char *) name, O_CREAT|O_EXCL|O_RDWR,
+              access ? access : 0600);
 
     if (fd != -1 && !persistent) {
         unlink((const char *) name);
diff --git a/src/os/unix/ngx_files.h b/src/os/unix/ngx_files.h
index 72d3461..1e98fc0 100644
--- a/src/os/unix/ngx_files.h
+++ b/src/os/unix/ngx_files.h
@@ -38,7 +38,7 @@
 
 
 ngx_fd_t ngx_open_tempfile(u_char *name, ngx_uint_t persistent,
-    ngx_uint_t mode);
+    ngx_uint_t access);
 #define ngx_open_tempfile_n      "open()"
 
 
diff --git a/src/os/win32/ngx_files.h b/src/os/win32/ngx_files.h
index 5a171f5..1223d8e 100644
--- a/src/os/win32/ngx_files.h
+++ b/src/os/win32/ngx_files.h
@@ -48,7 +48,7 @@
 #define ngx_file_append_mode_n      "SetFilePointer()"
 
 
-#define ngx_open_tempfile(name, persistent, mode)                           \
+#define ngx_open_tempfile(name, persistent, access)                         \
     CreateFile((const char *) name,                                         \
                GENERIC_READ|GENERIC_WRITE,                                  \
                FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,          \
