diff --git a/net/sched/act_bpf.c b/net/sched/act_bpf.c
index 1d56903fd4c79aa008c4c540aabd8b4c099e81a1..1df78289e248179a502bd175810716273f6bfb91 100644
--- a/net/sched/act_bpf.c
+++ b/net/sched/act_bpf.c
@@ -339,6 +339,9 @@ static void tcf_bpf_cleanup(struct tc_action *act, int bind)
 		bpf_prog_put(prog->filter);
 	else
 		bpf_prog_destroy(prog->filter);
+
+	kfree(prog->bpf_ops);
+	kfree(prog->bpf_name);
 }
 
 static struct tc_action_ops act_bpf_ops __read_mostly = {