struct i40e_pf *pf = vsi->back;
        struct udphdr *udp;
        struct iphdr *ip;
-       bool err = false;
        u8 *raw_packet;
        int ret;
        static char packet[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0,
                dev_info(&pf->pdev->dev,
                         "PCTYPE:%d, Filter command send failed for fd_id:%d (ret = %d)\n",
                         fd_data->pctype, fd_data->fd_id, ret);
-               err = true;
+               /* Free the packet buffer since it wasn't added to the ring */
+               kfree(raw_packet);
+               return -EOPNOTSUPP;
        } else if (I40E_DEBUG_FD & pf->hw.debug_mask) {
                if (add)
                        dev_info(&pf->pdev->dev,
                                 "Filter deleted for PCTYPE %d loc = %d\n",
                                 fd_data->pctype, fd_data->fd_id);
        }
-       if (err)
-               kfree(raw_packet);
 
-       return err ? -EOPNOTSUPP : 0;
+       return 0;
 }
 
 #define I40E_TCPIP_DUMMY_PACKET_LEN 54
        struct i40e_pf *pf = vsi->back;
        struct tcphdr *tcp;
        struct iphdr *ip;
-       bool err = false;
        u8 *raw_packet;
        int ret;
        /* Dummy packet */
 
        fd_data->pctype = I40E_FILTER_PCTYPE_NONF_IPV4_TCP;
        ret = i40e_program_fdir_filter(fd_data, raw_packet, pf, add);
-
        if (ret) {
                dev_info(&pf->pdev->dev,
                         "PCTYPE:%d, Filter command send failed for fd_id:%d (ret = %d)\n",
                         fd_data->pctype, fd_data->fd_id, ret);
-               err = true;
+               /* Free the packet buffer since it wasn't added to the ring */
+               kfree(raw_packet);
+               return -EOPNOTSUPP;
        } else if (I40E_DEBUG_FD & pf->hw.debug_mask) {
                if (add)
                        dev_info(&pf->pdev->dev, "Filter OK for PCTYPE %d loc = %d)\n",
                                 fd_data->pctype, fd_data->fd_id);
        }
 
-       if (err)
-               kfree(raw_packet);
-
-       return err ? -EOPNOTSUPP : 0;
+       return 0;
 }
 
 #define I40E_IP_DUMMY_PACKET_LEN 34
 {
        struct i40e_pf *pf = vsi->back;
        struct iphdr *ip;
-       bool err = false;
        u8 *raw_packet;
        int ret;
        int i;
 
                fd_data->pctype = i;
                ret = i40e_program_fdir_filter(fd_data, raw_packet, pf, add);
-
                if (ret) {
                        dev_info(&pf->pdev->dev,
                                 "PCTYPE:%d, Filter command send failed for fd_id:%d (ret = %d)\n",
                                 fd_data->pctype, fd_data->fd_id, ret);
-                       err = true;
+                       /* The packet buffer wasn't added to the ring so we
+                        * need to free it now.
+                        */
+                       kfree(raw_packet);
+                       return -EOPNOTSUPP;
                } else if (I40E_DEBUG_FD & pf->hw.debug_mask) {
                        if (add)
                                dev_info(&pf->pdev->dev,
                }
        }
 
-       if (err)
-               kfree(raw_packet);
-
-       return err ? -EOPNOTSUPP : 0;
+       return 0;
 }
 
 /**