wifi: iwlwifi: mei: fix potential NULL-ptr deref after clone
authorJohannes Berg <johannes.berg@intel.com>
Sun, 30 Oct 2022 17:17:45 +0000 (19:17 +0200)
committerGregory Greenman <gregory.greenman@intel.com>
Thu, 10 Nov 2022 11:26:26 +0000 (13:26 +0200)
If cloning the SKB fails, don't try to use it, but rather return
as if we should pass it.

Coverity CID: 1503456

Fixes: 2da4366f9e2c ("iwlwifi: mei: add the driver to allow cooperation with CSME")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20221030191011.0ce03ba99601.I87960b7cb0a3d16b9fd8d9144027e7e2587f5a58@changeid
drivers/net/wireless/intel/iwlwifi/mei/net.c

index 3472167..eac46d1 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * Copyright (C) 2021 Intel Corporation
+ * Copyright (C) 2021-2022 Intel Corporation
  */
 
 #include <uapi/linux/if_ether.h>
@@ -337,10 +337,14 @@ rx_handler_result_t iwl_mei_rx_filter(struct sk_buff *orig_skb,
        if (!*pass_to_csme)
                return RX_HANDLER_PASS;
 
-       if (ret == RX_HANDLER_PASS)
+       if (ret == RX_HANDLER_PASS) {
                skb = skb_copy(orig_skb, GFP_ATOMIC);
-       else
+
+               if (!skb)
+                       return RX_HANDLER_PASS;
+       } else {
                skb = orig_skb;
+       }
 
        /* CSME wants the MAC header as well, push it back */
        skb_push(skb, skb->data - skb_mac_header(skb));