On Tue, 9 Sep 2008, Evgeniy Polyakov wrote:
I am pleased to announce new Distributed Storage (DST) project release.
Hi,
I just had another quick random look over it and found a small memory
leak in an error path, that was already present in your last post, but I
didn't notice. Also there still seem to be some non-critical style
issues, like an explicit continue at then end of a loop, but I didn't
bother to catch them this time.
Sven
+static void *dst_crypto_thread_init(void *data)
+{
+ struct dst_node *n = data;
+ struct dst_crypto_engine *e;
+ int err = -ENOMEM;
+
+ e = kzalloc(sizeof(struct dst_crypto_engine), GFP_KERNEL);
+ if (!e)
+ goto err_out_exit;
+ e->src = kzalloc(sizeof(struct scatterlist) * 2 * n->max_pages,
+ GFP_KERNEL);
+ if (!e->src)
+ goto err_out_free;
+
+ e->dst = e->src + n->max_pages;
+
+ err = dst_crypto_engine_init(e, n);
+ if (err)
+ goto err_out_free;
+
+ return e;
+
+err_out_free:
+ kfree(e->src);
You leak the memory allocated for e here.
+err_out_exit:
+ return ERR_PTR(err);
+}