|
@@ -935,8 +935,10 @@ again:
|
|
|
node = tree_search(tree, start);
|
|
|
if (!node) {
|
|
|
prealloc = alloc_extent_state_atomic(prealloc);
|
|
|
- if (!prealloc)
|
|
|
- return -ENOMEM;
|
|
|
+ if (!prealloc) {
|
|
|
+ err = -ENOMEM;
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
err = insert_state(tree, prealloc, start, end, &bits);
|
|
|
prealloc = NULL;
|
|
|
BUG_ON(err == -EEXIST);
|
|
@@ -992,8 +994,10 @@ hit_next:
|
|
|
*/
|
|
|
if (state->start < start) {
|
|
|
prealloc = alloc_extent_state_atomic(prealloc);
|
|
|
- if (!prealloc)
|
|
|
- return -ENOMEM;
|
|
|
+ if (!prealloc) {
|
|
|
+ err = -ENOMEM;
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
err = split_state(tree, state, prealloc, start);
|
|
|
BUG_ON(err == -EEXIST);
|
|
|
prealloc = NULL;
|
|
@@ -1024,8 +1028,10 @@ hit_next:
|
|
|
this_end = last_start - 1;
|
|
|
|
|
|
prealloc = alloc_extent_state_atomic(prealloc);
|
|
|
- if (!prealloc)
|
|
|
- return -ENOMEM;
|
|
|
+ if (!prealloc) {
|
|
|
+ err = -ENOMEM;
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
|
|
|
/*
|
|
|
* Avoid to free 'prealloc' if it can be merged with
|
|
@@ -1051,8 +1057,10 @@ hit_next:
|
|
|
*/
|
|
|
if (state->start <= end && state->end > end) {
|
|
|
prealloc = alloc_extent_state_atomic(prealloc);
|
|
|
- if (!prealloc)
|
|
|
- return -ENOMEM;
|
|
|
+ if (!prealloc) {
|
|
|
+ err = -ENOMEM;
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
|
|
|
err = split_state(tree, state, prealloc, end + 1);
|
|
|
BUG_ON(err == -EEXIST);
|