]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
mISDN: Fix a use after free in hfcmulti_tx()
authorDan Carpenter <dan.carpenter@linaro.org>
Wed, 24 Jul 2024 16:08:18 +0000 (11:08 -0500)
committerJakub Kicinski <kuba@kernel.org>
Thu, 25 Jul 2024 15:05:05 +0000 (08:05 -0700)
Don't dereference *sp after calling dev_kfree_skb(*sp).

Fixes: af69fb3a8ffa ("Add mISDN HFC multiport driver")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/8be65f5a-c2dd-4ba0-8a10-bfe5980b8cfb@stanley.mountain
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/isdn/hardware/mISDN/hfcmulti.c

index 0d2928d8aeae8f45d28b4263321d87ee4f09785b..e5a483fd9ad86f5878b9fcb5a603025aa8b68cb7 100644 (file)
@@ -1901,7 +1901,7 @@ hfcmulti_dtmf(struct hfc_multi *hc)
 static void
 hfcmulti_tx(struct hfc_multi *hc, int ch)
 {
-       int i, ii, temp, len = 0;
+       int i, ii, temp, tmp_len, len = 0;
        int Zspace, z1, z2; /* must be int for calculation */
        int Fspace, f1, f2;
        u_char *d;
@@ -2122,14 +2122,15 @@ next_frame:
                HFC_wait_nodebug(hc);
        }
 
+       tmp_len = (*sp)->len;
        dev_kfree_skb(*sp);
        /* check for next frame */
        if (bch && get_next_bframe(bch)) {
-               len = (*sp)->len;
+               len = tmp_len;
                goto next_frame;
        }
        if (dch && get_next_dframe(dch)) {
-               len = (*sp)->len;
+               len = tmp_len;
                goto next_frame;
        }