Staging: rtl8192e: Cleaning up error handling
authorFelix Schlepper <f3sch.git@outlook.com>
Fri, 24 Jun 2022 13:54:55 +0000 (15:54 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Jun 2022 11:50:03 +0000 (13:50 +0200)
Moved error handling to one common block.
This removes double checking if all txb->fragments[]
were initialized.
The original code worked fine, but this is cleaner.

Signed-off-by: Felix Schlepper <f3sch.git@outlook.com>
Link: https://lore.kernel.org/r/13b32131cd00a1f0b8793657a24ada71240a8350.1656078068.git.f3sch.git@outlook.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8192e/rtllib_tx.c

index 1307cf55741a0f8a5e3fc765ce3f4b52bc8a56a8..42f81b23a144fad06ff5619cd624c36e4bed1651 100644 (file)
@@ -214,19 +214,19 @@ static struct rtllib_txb *rtllib_alloc_txb(int nr_frags, int txb_size,
 
        for (i = 0; i < nr_frags; i++) {
                txb->fragments[i] = dev_alloc_skb(txb_size);
-               if (unlikely(!txb->fragments[i])) {
-                       i--;
-                       break;
-               }
+               if (unlikely(!txb->fragments[i]))
+                       goto err_free;
                memset(txb->fragments[i]->cb, 0, sizeof(txb->fragments[i]->cb));
        }
-       if (unlikely(i != nr_frags)) {
-               while (i >= 0)
-                       dev_kfree_skb_any(txb->fragments[i--]);
-               kfree(txb);
-               return NULL;
-       }
+
        return txb;
+
+err_free:
+       while (--i >= 0)
+               dev_kfree_skb_any(txb->fragments[i]);
+       kfree(txb);
+
+       return NULL;
 }
 
 static int rtllib_classify(struct sk_buff *skb, u8 bIsAmsdu)