Stop leaking SKBs in elm327_parse_frame()
authornorly <ny-git@enpas.org>
Sat, 11 Jun 2022 12:49:05 +0000 (14:49 +0200)
committernorly <ny-git@enpas.org>
Sat, 11 Jun 2022 12:49:05 +0000 (14:49 +0200)
SKBs need to be used or freed before returning, no exceptions.

module/can327.c

index 2d9c44e1df9d81e04b66b707c01e98c2c3a29057..ea92daf43bca731ce07d97cf46b2f114a0eaf3fb 100644 (file)
@@ -440,6 +440,7 @@ static int elm327_parse_frame(struct can327 *elm, size_t len)
                /* The line is likely garbled anyway, so bail.
                 * The main code will restart listening.
                 */
+               kfree_skb(skb);
                return -ENODATA;
        }
 
@@ -458,6 +459,7 @@ static int elm327_parse_frame(struct can327 *elm, size_t len)
                /* This is not a well-formatted data line.
                 * Assume it's an error message.
                 */
+               kfree_skb(skb);
                return -ENODATA;
        }
 
@@ -465,6 +467,7 @@ static int elm327_parse_frame(struct can327 *elm, size_t len)
                /* The line is too short to be a valid frame hex dump.
                 * Something interrupted the hex dump or it is invalid.
                 */
+               kfree_skb(skb);
                return -ENODATA;
        }
 
@@ -516,6 +519,7 @@ static int elm327_parse_frame(struct can327 *elm, size_t len)
                 * However, this will correctly drop the state machine back into
                 * command mode.
                 */
+               kfree_skb(skb);
                return -ENODATA;
        }