static int local_lstat(FsContext *fs_ctx, V9fsPath *fs_path, struct stat *stbuf)

{

    int err;

    char *buffer;

    char *path = fs_path->data;



    buffer = rpath(fs_ctx, path);

    err =  lstat(buffer, stbuf);

    if (err) {

        goto err_out;

    }

    if (fs_ctx->export_flags & V9FS_SM_MAPPED) {

        /* Actual credentials are part of extended attrs */

        uid_t tmp_uid;

        gid_t tmp_gid;

        mode_t tmp_mode;

        dev_t tmp_dev;

        if (getxattr(buffer, "user.virtfs.uid", &tmp_uid, sizeof(uid_t)) > 0) {

            stbuf->st_uid = le32_to_cpu(tmp_uid);

        }

        if (getxattr(buffer, "user.virtfs.gid", &tmp_gid, sizeof(gid_t)) > 0) {

            stbuf->st_gid = le32_to_cpu(tmp_gid);

        }

        if (getxattr(buffer, "user.virtfs.mode",

                    &tmp_mode, sizeof(mode_t)) > 0) {

            stbuf->st_mode = le32_to_cpu(tmp_mode);

        }

        if (getxattr(buffer, "user.virtfs.rdev", &tmp_dev, sizeof(dev_t)) > 0) {

            stbuf->st_rdev = le64_to_cpu(tmp_dev);

        }

    } else if (fs_ctx->export_flags & V9FS_SM_MAPPED_FILE) {

        local_mapped_file_attr(fs_ctx, path, stbuf);

    }



err_out:

    g_free(buffer);

    return err;

}

static int local_lstat(FsContext *fs_ctx, V9fsPath *fs_path, struct stat *stbuf)

{

    int err;

    char *buffer;

    char *path = fs_path->data;



    buffer = rpath(fs_ctx, path);

    err =  lstat(buffer, stbuf);

    if (err) {

        goto err_out;

    }

    if (fs_ctx->export_flags & V9FS_SM_MAPPED) {

        

        uid_t tmp_uid;

        gid_t tmp_gid;

        mode_t tmp_mode;

        dev_t tmp_dev;

        if (getxattr(buffer, "user.virtfs.uid", &tmp_uid, sizeof(uid_t)) > 0) {

            stbuf->st_uid = le32_to_cpu(tmp_uid);

        }

        if (getxattr(buffer, "user.virtfs.gid", &tmp_gid, sizeof(gid_t)) > 0) {

            stbuf->st_gid = le32_to_cpu(tmp_gid);

        }

        if (getxattr(buffer, "user.virtfs.mode",

                    &tmp_mode, sizeof(mode_t)) > 0) {

            stbuf->st_mode = le32_to_cpu(tmp_mode);

        }

        if (getxattr(buffer, "user.virtfs.rdev", &tmp_dev, sizeof(dev_t)) > 0) {

            stbuf->st_rdev = le64_to_cpu(tmp_dev);

        }

    } else if (fs_ctx->export_flags & V9FS_SM_MAPPED_FILE) {

        local_mapped_file_attr(fs_ctx, path, stbuf);

    }



err_out:

    g_free(buffer);

    return err;

}

    int err;     char *buffer;     char *path = fs_path->data;     buffer = rpath(fs_ctx, path);     err =  lstat(buffer, stbuf);         if (getxattr(buffer, "user.virtfs.uid", &tmp_uid, sizeof(uid_t)) > 0) {         if (getxattr(buffer, "user.virtfs.gid", &tmp_gid, sizeof(gid_t)) > 0) {         if (getxattr(buffer, "user.virtfs.mode",                     &tmp_mode, sizeof(mode_t)) > 0) {         if (getxattr(buffer, "user.virtfs.rdev", &tmp_dev, sizeof(dev_t)) > 0) {         local_mapped_file_attr(fs_ctx, path, stbuf);     g_free(buffer);
static int FUNC_0(FsContext *VAR_0, V9fsPath *VAR_1, struct stat *VAR_2)

{

    int VAR_3;

    char *VAR_4;

    char *VAR_5 = VAR_1->data;



    VAR_4 = rpath(VAR_0, VAR_5);

    VAR_3 =  lstat(VAR_4, VAR_2);

    if (VAR_3) {

        goto err_out;

    }

    if (VAR_0->export_flags & V9FS_SM_MAPPED) {

        

        uid_t tmp_uid;

        gid_t tmp_gid;

        mode_t tmp_mode;

        dev_t tmp_dev;

        if (getxattr(VAR_4, "user.virtfs.uid", &tmp_uid, sizeof(uid_t)) > 0) {

            VAR_2->st_uid = le32_to_cpu(tmp_uid);

        }

        if (getxattr(VAR_4, "user.virtfs.gid", &tmp_gid, sizeof(gid_t)) > 0) {

            VAR_2->st_gid = le32_to_cpu(tmp_gid);

        }

        if (getxattr(VAR_4, "user.virtfs.mode",

                    &tmp_mode, sizeof(mode_t)) > 0) {

            VAR_2->st_mode = le32_to_cpu(tmp_mode);

        }

        if (getxattr(VAR_4, "user.virtfs.rdev", &tmp_dev, sizeof(dev_t)) > 0) {

            VAR_2->st_rdev = le64_to_cpu(tmp_dev);

        }

    } else if (VAR_0->export_flags & V9FS_SM_MAPPED_FILE) {

        local_mapped_file_attr(VAR_0, VAR_5, VAR_2);

    }



err_out:

    g_free(VAR_4);

    return VAR_3;

}

static int FUNC_0(FsContext *VAR_0, V9fsPath *VAR_1, struct stat *VAR_2)
{ int VAR_3; char *VAR_4; char *VAR_5 = VAR_1->data; VAR_4 = rpath(VAR_0, VAR_5); VAR_3 =  lstat(VAR_4, VAR_2); if (VAR_3) { goto err_out; } if (VAR_0->export_flags & V9FS_SM_MAPPED) { uid_t tmp_uid; gid_t tmp_gid; mode_t tmp_mode; dev_t tmp_dev; if (getxattr(VAR_4, "user.virtfs.uid", &tmp_uid, sizeof(uid_t)) > 0) { VAR_2->st_uid = le32_to_cpu(tmp_uid); } if (getxattr(VAR_4, "user.virtfs.gid", &tmp_gid, sizeof(gid_t)) > 0) { VAR_2->st_gid = le32_to_cpu(tmp_gid); } if (getxattr(VAR_4, "user.virtfs.mode",
&tmp_mode, sizeof(mode_t)) > 0) { VAR_2->st_mode = le32_to_cpu(tmp_mode); } if (getxattr(VAR_4, "user.virtfs.rdev", &tmp_dev, sizeof(dev_t)) > 0) { VAR_2->st_rdev = le64_to_cpu(tmp_dev); } } else if (VAR_0->export_flags & V9FS_SM_MAPPED_FILE) { local_mapped_file_attr(VAR_0, VAR_5, VAR_2); } err_out:
g_free(VAR_4); return VAR_3; }