2021-11-30 23:14:22

by Stotland, Inga

[permalink] [raw]
Subject: [PATCH BlueZ] mesh: Don't log error for false positive mkdir failure

When invoking mkdir() for mesh configuration storage, do not
report an error if a target directory already exists.
---
mesh/keyring.c | 2 +-
mesh/rpl.c | 4 ++--
mesh/util.c | 4 ++--
3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/mesh/keyring.c b/mesh/keyring.c
index 51621777d..b44091154 100644
--- a/mesh/keyring.c
+++ b/mesh/keyring.c
@@ -50,7 +50,7 @@ static int open_key_file(struct mesh_node *node, const char *key_dir,

if (flags & O_CREAT) {
snprintf(fname, PATH_MAX, "%s%s", node_path, key_dir);
- if (mkdir(fname, 0755) != 0)
+ if (mkdir(fname, 0755) != 0 && errno != EEXIST)
l_error("Failed to create dir(%d): %s", errno, fname);
}

diff --git a/mesh/rpl.c b/mesh/rpl.c
index 9a99afe7b..6bb3532b2 100644
--- a/mesh/rpl.c
+++ b/mesh/rpl.c
@@ -255,7 +255,7 @@ void rpl_update(struct mesh_node *node, uint32_t cur)

/* Make sure path exists */
snprintf(path, PATH_MAX, "%s%s", node_path, rpl_dir);
- if (mkdir(path, 0755) != 0)
+ if (mkdir(path, 0755) != 0 && errno != EEXIST)
l_error("Failed to create dir(%d): %s", errno, path);

dir = opendir(path);
@@ -293,7 +293,7 @@ bool rpl_init(const char *node_path)
return false;

snprintf(path, PATH_MAX, "%s%s", node_path, rpl_dir);
- if (mkdir(path, 0755) != 0)
+ if (mkdir(path, 0755) != 0 && errno != EEXIST)
l_error("Failed to create dir(%d): %s", errno, path);
return true;
}
diff --git a/mesh/util.c b/mesh/util.c
index d505e7a0c..82b57f642 100644
--- a/mesh/util.c
+++ b/mesh/util.c
@@ -118,13 +118,13 @@ int create_dir(const char *dir_name)
}

strncat(dir, prev + 1, next - prev);
- if (mkdir(dir, 0755) != 0)
+ if (mkdir(dir, 0755) != 0 && errno != EEXIST)
l_error("Failed to create dir(%d): %s", errno, dir);

prev = next;
}

- if (mkdir(dir_name, 0755) != 0)
+ if (mkdir(dir_name, 0755) != 0 && errno != EEXIST)
l_error("Failed to create dir(%d): %s", errno, dir_name);

return 0;
--
2.31.1



2021-11-30 23:38:49

by bluez.test.bot

[permalink] [raw]
Subject: RE: [BlueZ] mesh: Don't log error for false positive mkdir failure

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=588207

---Test result---

Test Summary:
CheckPatch PASS 1.33 seconds
GitLint PASS 0.89 seconds
Prep - Setup ELL PASS 52.68 seconds
Build - Prep PASS 0.44 seconds
Build - Configure PASS 9.91 seconds
Build - Make PASS 220.95 seconds
Make Check PASS 10.23 seconds
Make Distcheck PASS 266.36 seconds
Build w/ext ELL - Configure PASS 10.03 seconds
Build w/ext ELL - Make PASS 208.33 seconds



---
Regards,
Linux Bluetooth

2021-12-06 18:32:19

by Gix, Brian

[permalink] [raw]
Subject: Re: [PATCH BlueZ] mesh: Don't log error for false positive mkdir failure

Applied, Thanks.

On Tue, 2021-11-30 at 15:14 -0800, Inga Stotland wrote:
> When invoking mkdir() for mesh configuration storage, do not
> report an error if a target directory already exists.
> ---
>  mesh/keyring.c | 2 +-
>  mesh/rpl.c     | 4 ++--
>  mesh/util.c    | 4 ++--
>  3 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/mesh/keyring.c b/mesh/keyring.c
> index 51621777d..b44091154 100644
> --- a/mesh/keyring.c
> +++ b/mesh/keyring.c
> @@ -50,7 +50,7 @@ static int open_key_file(struct mesh_node *node, const char *key_dir,
>  
>         if (flags & O_CREAT) {
>                 snprintf(fname, PATH_MAX, "%s%s", node_path, key_dir);
> -               if (mkdir(fname, 0755) != 0)
> +               if (mkdir(fname, 0755) != 0 && errno != EEXIST)
>                         l_error("Failed to create dir(%d): %s", errno, fname);
>         }
>  
> diff --git a/mesh/rpl.c b/mesh/rpl.c
> index 9a99afe7b..6bb3532b2 100644
> --- a/mesh/rpl.c
> +++ b/mesh/rpl.c
> @@ -255,7 +255,7 @@ void rpl_update(struct mesh_node *node, uint32_t cur)
>  
>         /* Make sure path exists */
>         snprintf(path, PATH_MAX, "%s%s", node_path, rpl_dir);
> -       if (mkdir(path, 0755) != 0)
> +       if (mkdir(path, 0755) != 0 && errno != EEXIST)
>                 l_error("Failed to create dir(%d): %s", errno, path);
>  
>         dir = opendir(path);
> @@ -293,7 +293,7 @@ bool rpl_init(const char *node_path)
>                 return false;
>  
>         snprintf(path, PATH_MAX, "%s%s", node_path, rpl_dir);
> -       if (mkdir(path, 0755) != 0)
> +       if (mkdir(path, 0755) != 0 && errno != EEXIST)
>                 l_error("Failed to create dir(%d): %s", errno, path);
>         return true;
>  }
> diff --git a/mesh/util.c b/mesh/util.c
> index d505e7a0c..82b57f642 100644
> --- a/mesh/util.c
> +++ b/mesh/util.c
> @@ -118,13 +118,13 @@ int create_dir(const char *dir_name)
>                 }
>  
>                 strncat(dir, prev + 1, next - prev);
> -               if (mkdir(dir, 0755) != 0)
> +               if (mkdir(dir, 0755) != 0 && errno != EEXIST)
>                         l_error("Failed to create dir(%d): %s", errno, dir);
>  
>                 prev = next;
>         }
>  
> -       if (mkdir(dir_name, 0755) != 0)
> +       if (mkdir(dir_name, 0755) != 0 && errno != EEXIST)
>                 l_error("Failed to create dir(%d): %s", errno, dir_name);
>  
>         return 0;