From: Allan Stephens <[EMAIL PROTECTED]>

Now exits cleanly if attempt to allocate larger array of subsequences fails,
without losing track of pointer to existing array.

Signed-off-by: Allan Stephens <[EMAIL PROTECTED]>
Signed-off-by: Per Liden <[EMAIL PROTECTED]>
---
 net/tipc/name_table.c |   18 +++++++++---------
 1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/net/tipc/name_table.c b/net/tipc/name_table.c
index d129422..0511436 100644
--- a/net/tipc/name_table.c
+++ b/net/tipc/name_table.c
@@ -284,18 +284,18 @@ static struct publication *tipc_nameseq_
                /* Ensure there is space for new sub-sequence */
 
                if (nseq->first_free == nseq->alloc) {
-                       struct sub_seq *sseqs = nseq->sseqs;
-                       nseq->sseqs = tipc_subseq_alloc(nseq->alloc * 2);
-                       if (nseq->sseqs != NULL) {
-                               memcpy(nseq->sseqs, sseqs,
-                                      nseq->alloc * sizeof (struct sub_seq));
-                               kfree(sseqs);
-                               dbg("Allocated %u sseqs\n", nseq->alloc);
-                               nseq->alloc *= 2;
-                       } else {
+                       struct sub_seq *sseqs = tipc_subseq_alloc(nseq->alloc * 
2);
+
+                       if (!sseqs) {
                                warn("Memory squeeze; failed to create 
sub-sequence\n");
                                return NULL;
                        }
+                       dbg("Allocated %u more sseqs\n", nseq->alloc);
+                       memcpy(sseqs, nseq->sseqs,
+                              nseq->alloc * sizeof(struct sub_seq));
+                       kfree(nseq->sseqs);
+                       nseq->sseqs = sseqs;
+                       nseq->alloc *= 2;
                }
                dbg("Have %u sseqs for type %u\n", nseq->alloc, type);
 
-- 
1.4.0

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to