- if (!ret) {
- if ((flags & RCUJA_SHADOW_CLEAR_FREE_NODE)
- && !shadow_node->is_root) {
- if (flags & RCUJA_SHADOW_CLEAR_FREE_LOCK) {
- flavor->update_call_rcu(&shadow_node->head,
- free_shadow_node_and_node_and_lock);
- } else {
- flavor->update_call_rcu(&shadow_node->head,
- free_shadow_node_and_node);
- }
+ if (ret)
+ goto unlock;
+ if ((flags & RCUJA_SHADOW_CLEAR_FREE_NODE)
+ && shadow_node->level) {
+ if (flags & RCUJA_SHADOW_CLEAR_FREE_LOCK) {
+ flavor->update_call_rcu(&shadow_node->head,
+ free_shadow_node_and_node_and_lock);