diff --git a/sdcard/sdcard.c b/sdcard/sdcard.c
index 9ba81ff102f112950517c7793ca403767f7ffdf6..d7bcceaef3f658f7c0fdd59f0194dfdfa2fd5022 100644
--- a/sdcard/sdcard.c
+++ b/sdcard/sdcard.c
@@ -904,7 +904,9 @@ static int handle_setattr(struct fuse* fuse, struct fuse_handler* handler,
     if (!node) {
         return -ENOENT;
     }
-    if (!check_caller_access_to_node(fuse, hdr, node, W_OK, has_rw)) {
+
+    if (!(req->valid & FATTR_FH) &&
+            !check_caller_access_to_node(fuse, hdr, node, W_OK, has_rw)) {
         return -EACCES;
     }