diff mbox series

[f2fs-dev] f2fs-tools: deal with permission denial on non-root user

Message ID 20240305204834.101697-1-jaegeuk@kernel.org (mailing list archive)
State New
Headers show
Series [f2fs-dev] f2fs-tools: deal with permission denial on non-root user | expand

Commit Message

Jaegeuk Kim March 5, 2024, 8:48 p.m. UTC
This fixes some android build failures due to the missing permission when
checking the loop device. Until we get a better solution, let's ignore
the error with warnings.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
 lib/libf2fs.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

Comments

Daeho Jeong March 5, 2024, 11:30 p.m. UTC | #1
Reviewed-by: Daeho Jeong <daehojeong@google.com>

On Tue, Mar 5, 2024 at 12:50 PM Jaegeuk Kim <jaegeuk@kernel.org> wrote:
>
> This fixes some android build failures due to the missing permission when
> checking the loop device. Until we get a better solution, let's ignore
> the error with warnings.
>
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> ---
>  lib/libf2fs.c | 12 +++++++++---
>  1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/lib/libf2fs.c b/lib/libf2fs.c
> index d51e485361ee..1cfbf31a9c85 100644
> --- a/lib/libf2fs.c
> +++ b/lib/libf2fs.c
> @@ -854,9 +854,15 @@ int f2fs_dev_is_umounted(char *path)
>
>                         loop_fd = open(mnt->mnt_fsname, O_RDONLY);
>                         if (loop_fd < 0) {
> +                               /* non-root users have no permission */
> +                               if (errno == EPERM || errno == EACCES) {
> +                                       MSG(0, "Info: open %s failed errno:%d - be careful to overwrite a mounted loopback file.\n",
> +                                                       mnt->mnt_fsname, errno);
> +                                       return 0;
> +                               }
>                                 MSG(0, "Info: open %s failed errno:%d\n",
> -                                       mnt->mnt_fsname, errno);
> -                               return -1;
> +                                                       mnt->mnt_fsname, errno);
> +                               return -errno;
>                         }
>
>                         err = ioctl(loop_fd, LOOP_GET_STATUS64, &loopinfo);
> @@ -864,7 +870,7 @@ int f2fs_dev_is_umounted(char *path)
>                         if (err < 0) {
>                                 MSG(0, "\tError: ioctl LOOP_GET_STATUS64 failed errno:%d!\n",
>                                         errno);
> -                               return -1;
> +                               return -errno;
>                         }
>
>                         if (st_buf.st_dev == loopinfo.lo_device &&
> --
> 2.44.0.278.ge034bb2e1d-goog
>
>
>
> _______________________________________________
> Linux-f2fs-devel mailing list
> Linux-f2fs-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
Huang Jianan March 6, 2024, 1:32 a.m. UTC | #2
Reviewed-by: Huang Jianan <huangjianan@xiaomi.com>

Thanks.


On 2024/3/6 4:48, Jaegeuk Kim wrote:
> This fixes some android build failures due to the missing permission when
> checking the loop device. Until we get a better solution, let's ignore
> the error with warnings.
>
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> ---
>   lib/libf2fs.c | 12 +++++++++---
>   1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/lib/libf2fs.c b/lib/libf2fs.c
> index d51e485361ee..1cfbf31a9c85 100644
> --- a/lib/libf2fs.c
> +++ b/lib/libf2fs.c
> @@ -854,9 +854,15 @@ int f2fs_dev_is_umounted(char *path)
>
>                          loop_fd = open(mnt->mnt_fsname, O_RDONLY);
>                          if (loop_fd < 0) {
> +                               /* non-root users have no permission */
> +                               if (errno == EPERM || errno == EACCES) {
> +                                       MSG(0, "Info: open %s failed errno:%d - be careful to overwrite a mounted loopback file.\n",
> +                                                       mnt->mnt_fsname, errno);
> +                                       return 0;
> +                               }
>                                  MSG(0, "Info: open %s failed errno:%d\n",
> -                                       mnt->mnt_fsname, errno);
> -                               return -1;
> +                                                       mnt->mnt_fsname, errno);
> +                               return -errno;
>                          }
>
>                          err = ioctl(loop_fd, LOOP_GET_STATUS64, &loopinfo);
> @@ -864,7 +870,7 @@ int f2fs_dev_is_umounted(char *path)
>                          if (err < 0) {
>                                  MSG(0, "\tError: ioctl LOOP_GET_STATUS64 failed errno:%d!\n",
>                                          errno);
> -                               return -1;
> +                               return -errno;
>                          }
>
>                          if (st_buf.st_dev == loopinfo.lo_device &&
> --
> 2.44.0.278.ge034bb2e1d-goog
>
>
>
> _______________________________________________
> Linux-f2fs-devel mailing list
> Linux-f2fs-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
Chao Yu March 6, 2024, 2:02 a.m. UTC | #3
On 2024/3/6 4:48, Jaegeuk Kim wrote:
> This fixes some android build failures due to the missing permission when
> checking the loop device. Until we get a better solution, let's ignore
> the error with warnings.
> 
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>

Reviewed-by: Chao Yu <chao@kernel.org>

Thanks,
diff mbox series

Patch

diff --git a/lib/libf2fs.c b/lib/libf2fs.c
index d51e485361ee..1cfbf31a9c85 100644
--- a/lib/libf2fs.c
+++ b/lib/libf2fs.c
@@ -854,9 +854,15 @@  int f2fs_dev_is_umounted(char *path)
 
 			loop_fd = open(mnt->mnt_fsname, O_RDONLY);
 			if (loop_fd < 0) {
+				/* non-root users have no permission */
+				if (errno == EPERM || errno == EACCES) {
+					MSG(0, "Info: open %s failed errno:%d - be careful to overwrite a mounted loopback file.\n",
+							mnt->mnt_fsname, errno);
+					return 0;
+				}
 				MSG(0, "Info: open %s failed errno:%d\n",
-					mnt->mnt_fsname, errno);
-				return -1;
+							mnt->mnt_fsname, errno);
+				return -errno;
 			}
 
 			err = ioctl(loop_fd, LOOP_GET_STATUS64, &loopinfo);
@@ -864,7 +870,7 @@  int f2fs_dev_is_umounted(char *path)
 			if (err < 0) {
 				MSG(0, "\tError: ioctl LOOP_GET_STATUS64 failed errno:%d!\n",
 					errno);
-				return -1;
+				return -errno;
 			}
 
 			if (st_buf.st_dev == loopinfo.lo_device &&