Loading sdcard/sdcard.c +13 −3 Original line number Diff line number Diff line Loading @@ -195,6 +195,7 @@ static void add_node_to_parent(struct node *node, struct node *parent) { node->parent = parent; node->next = parent->child; parent->child = node; parent->refcount++; } struct node *node_create(struct node *parent, const char *name, __u64 nid, __u64 gen) Loading @@ -217,7 +218,6 @@ struct node *node_create(struct node *parent, const char *name, __u64 nid, __u64 add_node_to_parent(node, parent); memcpy(node->name, name, namelen + 1); node->namelen = namelen; parent->refcount++; return node; } Loading Loading @@ -293,6 +293,15 @@ struct node *lookup_child_by_inode(struct node *node, __u64 nid) return 0; } static void dec_refcount(struct node *node) { if (node->refcount > 0) { node->refcount--; TRACE("dec_refcount %p(%s) -> %d\n", node, node->name, node->refcount); } else { ERROR("Zero refcnt %p\n", node); } } static struct node *remove_child(struct node *parent, __u64 nid) { struct node *prev = 0; Loading @@ -307,6 +316,7 @@ static struct node *remove_child(struct node *parent, __u64 nid) } node->next = 0; node->parent = 0; dec_refcount(parent); return node; } prev = node; Loading Loading @@ -348,7 +358,7 @@ struct node *node_lookup(struct fuse *fuse, struct node *parent, const char *nam void node_release(struct node *node) { TRACE("RELEASE %p (%s) rc=%d\n", node, node->name, node->refcount); node->refcount--; dec_refcount(node); if (node->refcount == 0) { if (node->parent->child == node) { node->parent->child = node->parent->child->next; Loading @@ -371,7 +381,7 @@ void node_release(struct node *node) /* TODO: remove debugging - poison memory */ memset(node->name, 0xef, node->namelen); free(node->name); memset(node, 0xef, sizeof(*node)); memset(node, 0xfc, sizeof(*node)); free(node); } } Loading Loading
sdcard/sdcard.c +13 −3 Original line number Diff line number Diff line Loading @@ -195,6 +195,7 @@ static void add_node_to_parent(struct node *node, struct node *parent) { node->parent = parent; node->next = parent->child; parent->child = node; parent->refcount++; } struct node *node_create(struct node *parent, const char *name, __u64 nid, __u64 gen) Loading @@ -217,7 +218,6 @@ struct node *node_create(struct node *parent, const char *name, __u64 nid, __u64 add_node_to_parent(node, parent); memcpy(node->name, name, namelen + 1); node->namelen = namelen; parent->refcount++; return node; } Loading Loading @@ -293,6 +293,15 @@ struct node *lookup_child_by_inode(struct node *node, __u64 nid) return 0; } static void dec_refcount(struct node *node) { if (node->refcount > 0) { node->refcount--; TRACE("dec_refcount %p(%s) -> %d\n", node, node->name, node->refcount); } else { ERROR("Zero refcnt %p\n", node); } } static struct node *remove_child(struct node *parent, __u64 nid) { struct node *prev = 0; Loading @@ -307,6 +316,7 @@ static struct node *remove_child(struct node *parent, __u64 nid) } node->next = 0; node->parent = 0; dec_refcount(parent); return node; } prev = node; Loading Loading @@ -348,7 +358,7 @@ struct node *node_lookup(struct fuse *fuse, struct node *parent, const char *nam void node_release(struct node *node) { TRACE("RELEASE %p (%s) rc=%d\n", node, node->name, node->refcount); node->refcount--; dec_refcount(node); if (node->refcount == 0) { if (node->parent->child == node) { node->parent->child = node->parent->child->next; Loading @@ -371,7 +381,7 @@ void node_release(struct node *node) /* TODO: remove debugging - poison memory */ memset(node->name, 0xef, node->namelen); free(node->name); memset(node, 0xef, sizeof(*node)); memset(node, 0xfc, sizeof(*node)); free(node); } } Loading