|
@@ -951,12 +951,14 @@ int nfp_cpp_read(struct nfp_cpp *cpp, u32 destination,
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
|
|
|
|
err = nfp_cpp_area_acquire(area);
|
|
err = nfp_cpp_area_acquire(area);
|
|
- if (err)
|
|
|
|
- goto out;
|
|
|
|
|
|
+ if (err) {
|
|
|
|
+ nfp_cpp_area_free(area);
|
|
|
|
+ return err;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
err = nfp_cpp_area_read(area, offset, kernel_vaddr, length);
|
|
err = nfp_cpp_area_read(area, offset, kernel_vaddr, length);
|
|
-out:
|
|
|
|
|
|
+
|
|
if (cache)
|
|
if (cache)
|
|
area_cache_put(cpp, cache);
|
|
area_cache_put(cpp, cache);
|
|
else
|
|
else
|
|
@@ -993,13 +995,14 @@ int nfp_cpp_write(struct nfp_cpp *cpp, u32 destination,
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
|
|
|
|
err = nfp_cpp_area_acquire(area);
|
|
err = nfp_cpp_area_acquire(area);
|
|
- if (err)
|
|
|
|
- goto out;
|
|
|
|
|
|
+ if (err) {
|
|
|
|
+ nfp_cpp_area_free(area);
|
|
|
|
+ return err;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
err = nfp_cpp_area_write(area, offset, kernel_vaddr, length);
|
|
err = nfp_cpp_area_write(area, offset, kernel_vaddr, length);
|
|
|
|
|
|
-out:
|
|
|
|
if (cache)
|
|
if (cache)
|
|
area_cache_put(cpp, cache);
|
|
area_cache_put(cpp, cache);
|
|
else
|
|
else
|