stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev, Jamal Hadi Salim <jhs@mojatatu.com>,
	Jiri Pirko <jiri@nvidia.com>, Paolo Abeni <pabeni@redhat.com>
Subject: [PATCH 4.14 149/193] net/sched: Retire tcindex classifier
Date: Fri, 10 Mar 2023 14:38:51 +0100	[thread overview]
Message-ID: <20230310133716.170763905@linuxfoundation.org> (raw)
In-Reply-To: <20230310133710.926811681@linuxfoundation.org>

From: Jamal Hadi Salim <jhs@mojatatu.com>

commit 8c710f75256bb3cf05ac7b1672c82b92c43f3d28 upstream.

The tcindex classifier has served us well for about a quarter of a century
but has not been getting much TLC due to lack of known users. Most recently
it has become easy prey to syzkaller. For this reason, we are retiring it.

Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Acked-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/sched/Kconfig       |   11 
 net/sched/Makefile      |    1 
 net/sched/cls_tcindex.c |  690 ------------------------------------------------
 3 files changed, 702 deletions(-)
 delete mode 100644 net/sched/cls_tcindex.c
 delete mode 100644 tools/testing/selftests/tc-testing/tc-tests/filters/tcindex.json

--- a/net/sched/Kconfig
+++ b/net/sched/Kconfig
@@ -412,17 +412,6 @@ config NET_CLS_BASIC
 	  To compile this code as a module, choose M here: the
 	  module will be called cls_basic.
 
-config NET_CLS_TCINDEX
-	tristate "Traffic-Control Index (TCINDEX)"
-	select NET_CLS
-	---help---
-	  Say Y here if you want to be able to classify packets based on
-	  traffic control indices. You will want this feature if you want
-	  to implement Differentiated Services together with DSMARK.
-
-	  To compile this code as a module, choose M here: the
-	  module will be called cls_tcindex.
-
 config NET_CLS_ROUTE4
 	tristate "Routing decision (ROUTE)"
 	depends on INET
--- a/net/sched/Makefile
+++ b/net/sched/Makefile
@@ -58,7 +58,6 @@ obj-$(CONFIG_NET_CLS_U32)	+= cls_u32.o
 obj-$(CONFIG_NET_CLS_ROUTE4)	+= cls_route.o
 obj-$(CONFIG_NET_CLS_FW)	+= cls_fw.o
 obj-$(CONFIG_NET_CLS_RSVP)	+= cls_rsvp.o
-obj-$(CONFIG_NET_CLS_TCINDEX)	+= cls_tcindex.o
 obj-$(CONFIG_NET_CLS_RSVP6)	+= cls_rsvp6.o
 obj-$(CONFIG_NET_CLS_BASIC)	+= cls_basic.o
 obj-$(CONFIG_NET_CLS_FLOW)	+= cls_flow.o
--- a/net/sched/cls_tcindex.c
+++ /dev/null
@@ -1,690 +0,0 @@
-/*
- * net/sched/cls_tcindex.c	Packet classifier for skb->tc_index
- *
- * Written 1998,1999 by Werner Almesberger, EPFL ICA
- */
-
-#include <linux/module.h>
-#include <linux/types.h>
-#include <linux/kernel.h>
-#include <linux/skbuff.h>
-#include <linux/errno.h>
-#include <linux/slab.h>
-#include <net/act_api.h>
-#include <net/netlink.h>
-#include <net/pkt_cls.h>
-
-/*
- * Passing parameters to the root seems to be done more awkwardly than really
- * necessary. At least, u32 doesn't seem to use such dirty hacks. To be
- * verified. FIXME.
- */
-
-#define PERFECT_HASH_THRESHOLD	64	/* use perfect hash if not bigger */
-#define DEFAULT_HASH_SIZE	64	/* optimized for diffserv */
-
-
-struct tcindex_filter_result {
-	struct tcf_exts		exts;
-	struct tcf_result	res;
-	union {
-		struct work_struct	work;
-		struct rcu_head		rcu;
-	};
-};
-
-struct tcindex_filter {
-	u16 key;
-	struct tcindex_filter_result result;
-	struct tcindex_filter __rcu *next;
-	union {
-		struct work_struct work;
-		struct rcu_head rcu;
-	};
-};
-
-
-struct tcindex_data {
-	struct tcindex_filter_result *perfect; /* perfect hash; NULL if none */
-	struct tcindex_filter __rcu **h; /* imperfect hash; */
-	struct tcf_proto *tp;
-	u16 mask;		/* AND key with mask */
-	u32 shift;		/* shift ANDed key to the right */
-	u32 hash;		/* hash table size; 0 if undefined */
-	u32 alloc_hash;		/* allocated size */
-	u32 fall_through;	/* 0: only classify if explicit match */
-	struct rcu_head rcu;
-};
-
-static inline int tcindex_filter_is_set(struct tcindex_filter_result *r)
-{
-	return tcf_exts_has_actions(&r->exts) || r->res.classid;
-}
-
-static struct tcindex_filter_result *tcindex_lookup(struct tcindex_data *p,
-						    u16 key)
-{
-	if (p->perfect) {
-		struct tcindex_filter_result *f = p->perfect + key;
-
-		return tcindex_filter_is_set(f) ? f : NULL;
-	} else if (p->h) {
-		struct tcindex_filter __rcu **fp;
-		struct tcindex_filter *f;
-
-		fp = &p->h[key % p->hash];
-		for (f = rcu_dereference_bh_rtnl(*fp);
-		     f;
-		     fp = &f->next, f = rcu_dereference_bh_rtnl(*fp))
-			if (f->key == key)
-				return &f->result;
-	}
-
-	return NULL;
-}
-
-
-static int tcindex_classify(struct sk_buff *skb, const struct tcf_proto *tp,
-			    struct tcf_result *res)
-{
-	struct tcindex_data *p = rcu_dereference_bh(tp->root);
-	struct tcindex_filter_result *f;
-	int key = (skb->tc_index & p->mask) >> p->shift;
-
-	pr_debug("tcindex_classify(skb %p,tp %p,res %p),p %p\n",
-		 skb, tp, res, p);
-
-	f = tcindex_lookup(p, key);
-	if (!f) {
-		if (!p->fall_through)
-			return -1;
-		res->classid = TC_H_MAKE(TC_H_MAJ(tp->q->handle), key);
-		res->class = 0;
-		pr_debug("alg 0x%x\n", res->classid);
-		return 0;
-	}
-	*res = f->res;
-	pr_debug("map 0x%x\n", res->classid);
-
-	return tcf_exts_exec(skb, &f->exts, res);
-}
-
-
-static void *tcindex_get(struct tcf_proto *tp, u32 handle)
-{
-	struct tcindex_data *p = rtnl_dereference(tp->root);
-	struct tcindex_filter_result *r;
-
-	pr_debug("tcindex_get(tp %p,handle 0x%08x)\n", tp, handle);
-	if (p->perfect && handle >= p->alloc_hash)
-		return NULL;
-	r = tcindex_lookup(p, handle);
-	return r && tcindex_filter_is_set(r) ? r : NULL;
-}
-
-static int tcindex_init(struct tcf_proto *tp)
-{
-	struct tcindex_data *p;
-
-	pr_debug("tcindex_init(tp %p)\n", tp);
-	p = kzalloc(sizeof(struct tcindex_data), GFP_KERNEL);
-	if (!p)
-		return -ENOMEM;
-
-	p->mask = 0xffff;
-	p->hash = DEFAULT_HASH_SIZE;
-	p->fall_through = 1;
-
-	rcu_assign_pointer(tp->root, p);
-	return 0;
-}
-
-static void __tcindex_destroy_rexts(struct tcindex_filter_result *r)
-{
-	tcf_exts_destroy(&r->exts);
-	tcf_exts_put_net(&r->exts);
-}
-
-static void tcindex_destroy_rexts_work(struct work_struct *work)
-{
-	struct tcindex_filter_result *r;
-
-	r = container_of(work, struct tcindex_filter_result, work);
-	rtnl_lock();
-	__tcindex_destroy_rexts(r);
-	rtnl_unlock();
-}
-
-static void tcindex_destroy_rexts(struct rcu_head *head)
-{
-	struct tcindex_filter_result *r;
-
-	r = container_of(head, struct tcindex_filter_result, rcu);
-	INIT_WORK(&r->work, tcindex_destroy_rexts_work);
-	tcf_queue_work(&r->work);
-}
-
-static void __tcindex_destroy_fexts(struct tcindex_filter *f)
-{
-	tcf_exts_destroy(&f->result.exts);
-	tcf_exts_put_net(&f->result.exts);
-	kfree(f);
-}
-
-static void tcindex_destroy_fexts_work(struct work_struct *work)
-{
-	struct tcindex_filter *f = container_of(work, struct tcindex_filter,
-						work);
-
-	rtnl_lock();
-	__tcindex_destroy_fexts(f);
-	rtnl_unlock();
-}
-
-static void tcindex_destroy_fexts(struct rcu_head *head)
-{
-	struct tcindex_filter *f = container_of(head, struct tcindex_filter,
-						rcu);
-
-	INIT_WORK(&f->work, tcindex_destroy_fexts_work);
-	tcf_queue_work(&f->work);
-}
-
-static int tcindex_delete(struct tcf_proto *tp, void *arg, bool *last)
-{
-	struct tcindex_data *p = rtnl_dereference(tp->root);
-	struct tcindex_filter_result *r = arg;
-	struct tcindex_filter __rcu **walk;
-	struct tcindex_filter *f = NULL;
-
-	pr_debug("tcindex_delete(tp %p,arg %p),p %p\n", tp, arg, p);
-	if (p->perfect) {
-		if (!r->res.class)
-			return -ENOENT;
-	} else {
-		int i;
-
-		for (i = 0; i < p->hash; i++) {
-			walk = p->h + i;
-			for (f = rtnl_dereference(*walk); f;
-			     walk = &f->next, f = rtnl_dereference(*walk)) {
-				if (&f->result == r)
-					goto found;
-			}
-		}
-		return -ENOENT;
-
-found:
-		rcu_assign_pointer(*walk, rtnl_dereference(f->next));
-	}
-	tcf_unbind_filter(tp, &r->res);
-	/* all classifiers are required to call tcf_exts_destroy() after rcu
-	 * grace period, since converted-to-rcu actions are relying on that
-	 * in cleanup() callback
-	 */
-	if (f) {
-		if (tcf_exts_get_net(&f->result.exts))
-			call_rcu(&f->rcu, tcindex_destroy_fexts);
-		else
-			__tcindex_destroy_fexts(f);
-	} else {
-		if (tcf_exts_get_net(&r->exts))
-			call_rcu(&r->rcu, tcindex_destroy_rexts);
-		else
-			__tcindex_destroy_rexts(r);
-	}
-
-	*last = false;
-	return 0;
-}
-
-static int tcindex_destroy_element(struct tcf_proto *tp,
-				   void *arg, struct tcf_walker *walker)
-{
-	bool last;
-
-	return tcindex_delete(tp, arg, &last);
-}
-
-static void __tcindex_destroy(struct rcu_head *head)
-{
-	struct tcindex_data *p = container_of(head, struct tcindex_data, rcu);
-
-	kfree(p->perfect);
-	kfree(p->h);
-	kfree(p);
-}
-
-static inline int
-valid_perfect_hash(struct tcindex_data *p)
-{
-	return  p->hash > (p->mask >> p->shift);
-}
-
-static const struct nla_policy tcindex_policy[TCA_TCINDEX_MAX + 1] = {
-	[TCA_TCINDEX_HASH]		= { .type = NLA_U32 },
-	[TCA_TCINDEX_MASK]		= { .type = NLA_U16 },
-	[TCA_TCINDEX_SHIFT]		= { .type = NLA_U32 },
-	[TCA_TCINDEX_FALL_THROUGH]	= { .type = NLA_U32 },
-	[TCA_TCINDEX_CLASSID]		= { .type = NLA_U32 },
-};
-
-static int tcindex_filter_result_init(struct tcindex_filter_result *r)
-{
-	memset(r, 0, sizeof(*r));
-	return tcf_exts_init(&r->exts, TCA_TCINDEX_ACT, TCA_TCINDEX_POLICE);
-}
-
-static void __tcindex_partial_destroy(struct rcu_head *head)
-{
-	struct tcindex_data *p = container_of(head, struct tcindex_data, rcu);
-
-	kfree(p->perfect);
-	kfree(p);
-}
-
-static void tcindex_free_perfect_hash(struct tcindex_data *cp)
-{
-	int i;
-
-	for (i = 0; i < cp->hash; i++)
-		tcf_exts_destroy(&cp->perfect[i].exts);
-	kfree(cp->perfect);
-}
-
-static int tcindex_alloc_perfect_hash(struct tcindex_data *cp)
-{
-	int i, err = 0;
-
-	cp->perfect = kcalloc(cp->hash, sizeof(struct tcindex_filter_result),
-			      GFP_KERNEL | __GFP_NOWARN);
-	if (!cp->perfect)
-		return -ENOMEM;
-
-	for (i = 0; i < cp->hash; i++) {
-		err = tcf_exts_init(&cp->perfect[i].exts,
-				    TCA_TCINDEX_ACT, TCA_TCINDEX_POLICE);
-		if (err < 0)
-			goto errout;
-	}
-
-	return 0;
-
-errout:
-	tcindex_free_perfect_hash(cp);
-	return err;
-}
-
-static int
-tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base,
-		  u32 handle, struct tcindex_data *p,
-		  struct tcindex_filter_result *r, struct nlattr **tb,
-		  struct nlattr *est, bool ovr)
-{
-	struct tcindex_filter_result new_filter_result, *old_r = r;
-	struct tcindex_data *cp = NULL, *oldp;
-	struct tcindex_filter *f = NULL; /* make gcc behave */
-	struct tcf_result cr = {};
-	int err, balloc = 0;
-	struct tcf_exts e;
-
-	err = tcf_exts_init(&e, TCA_TCINDEX_ACT, TCA_TCINDEX_POLICE);
-	if (err < 0)
-		return err;
-	err = tcf_exts_validate(net, tp, tb, est, &e, ovr);
-	if (err < 0)
-		goto errout;
-
-	err = -ENOMEM;
-	/* tcindex_data attributes must look atomic to classifier/lookup so
-	 * allocate new tcindex data and RCU assign it onto root. Keeping
-	 * perfect hash and hash pointers from old data.
-	 */
-	cp = kzalloc(sizeof(*cp), GFP_KERNEL);
-	if (!cp)
-		goto errout;
-
-	cp->mask = p->mask;
-	cp->shift = p->shift;
-	cp->hash = p->hash;
-	cp->alloc_hash = p->alloc_hash;
-	cp->fall_through = p->fall_through;
-	cp->tp = tp;
-
-	if (tb[TCA_TCINDEX_HASH])
-		cp->hash = nla_get_u32(tb[TCA_TCINDEX_HASH]);
-
-	if (tb[TCA_TCINDEX_MASK])
-		cp->mask = nla_get_u16(tb[TCA_TCINDEX_MASK]);
-
-	if (tb[TCA_TCINDEX_SHIFT]) {
-		cp->shift = nla_get_u32(tb[TCA_TCINDEX_SHIFT]);
-		if (cp->shift > 16) {
-			err = -EINVAL;
-			goto errout;
-		}
-	}
-	if (!cp->hash) {
-		/* Hash not specified, use perfect hash if the upper limit
-		 * of the hashing index is below the threshold.
-		 */
-		if ((cp->mask >> cp->shift) < PERFECT_HASH_THRESHOLD)
-			cp->hash = (cp->mask >> cp->shift) + 1;
-		else
-			cp->hash = DEFAULT_HASH_SIZE;
-	}
-
-	if (p->perfect) {
-		int i;
-
-		if (tcindex_alloc_perfect_hash(cp) < 0)
-			goto errout;
-		cp->alloc_hash = cp->hash;
-		for (i = 0; i < min(cp->hash, p->hash); i++)
-			cp->perfect[i].res = p->perfect[i].res;
-		balloc = 1;
-	}
-	cp->h = p->h;
-
-	err = tcindex_filter_result_init(&new_filter_result);
-	if (err < 0)
-		goto errout_alloc;
-	if (old_r)
-		cr = r->res;
-
-	err = -EBUSY;
-
-	/* Hash already allocated, make sure that we still meet the
-	 * requirements for the allocated hash.
-	 */
-	if (cp->perfect) {
-		if (!valid_perfect_hash(cp) ||
-		    cp->hash > cp->alloc_hash)
-			goto errout_alloc;
-	} else if (cp->h && cp->hash != cp->alloc_hash) {
-		goto errout_alloc;
-	}
-
-	err = -EINVAL;
-	if (tb[TCA_TCINDEX_FALL_THROUGH])
-		cp->fall_through = nla_get_u32(tb[TCA_TCINDEX_FALL_THROUGH]);
-
-	if (!cp->perfect && !cp->h)
-		cp->alloc_hash = cp->hash;
-
-	/* Note: this could be as restrictive as if (handle & ~(mask >> shift))
-	 * but then, we'd fail handles that may become valid after some future
-	 * mask change. While this is extremely unlikely to ever matter,
-	 * the check below is safer (and also more backwards-compatible).
-	 */
-	if (cp->perfect || valid_perfect_hash(cp))
-		if (handle >= cp->alloc_hash)
-			goto errout_alloc;
-
-
-	err = -ENOMEM;
-	if (!cp->perfect && !cp->h) {
-		if (valid_perfect_hash(cp)) {
-			if (tcindex_alloc_perfect_hash(cp) < 0)
-				goto errout_alloc;
-			balloc = 1;
-		} else {
-			struct tcindex_filter __rcu **hash;
-
-			hash = kcalloc(cp->hash,
-				       sizeof(struct tcindex_filter *),
-				       GFP_KERNEL);
-
-			if (!hash)
-				goto errout_alloc;
-
-			cp->h = hash;
-			balloc = 2;
-		}
-	}
-
-	if (cp->perfect)
-		r = cp->perfect + handle;
-	else
-		r = tcindex_lookup(cp, handle) ? : &new_filter_result;
-
-	if (r == &new_filter_result) {
-		f = kzalloc(sizeof(*f), GFP_KERNEL);
-		if (!f)
-			goto errout_alloc;
-		f->key = handle;
-		f->next = NULL;
-		err = tcindex_filter_result_init(&f->result);
-		if (err < 0) {
-			kfree(f);
-			goto errout_alloc;
-		}
-	}
-
-	if (tb[TCA_TCINDEX_CLASSID]) {
-		cr.classid = nla_get_u32(tb[TCA_TCINDEX_CLASSID]);
-		tcf_bind_filter(tp, &cr, base);
-	}
-
-	if (old_r && old_r != r) {
-		err = tcindex_filter_result_init(old_r);
-		if (err < 0) {
-			kfree(f);
-			goto errout_alloc;
-		}
-	}
-
-	oldp = p;
-	r->res = cr;
-	tcf_exts_change(&r->exts, &e);
-
-	rcu_assign_pointer(tp->root, cp);
-
-	if (r == &new_filter_result) {
-		struct tcindex_filter *nfp;
-		struct tcindex_filter __rcu **fp;
-
-		f->result.res = r->res;
-		tcf_exts_change(&f->result.exts, &r->exts);
-
-		fp = cp->h + (handle % cp->hash);
-		for (nfp = rtnl_dereference(*fp);
-		     nfp;
-		     fp = &nfp->next, nfp = rtnl_dereference(*fp))
-				; /* nothing */
-
-		rcu_assign_pointer(*fp, f);
-	} else {
-		tcf_exts_destroy(&new_filter_result.exts);
-	}
-
-	if (oldp)
-		call_rcu(&oldp->rcu, __tcindex_partial_destroy);
-	return 0;
-
-errout_alloc:
-	if (balloc == 1)
-		tcindex_free_perfect_hash(cp);
-	else if (balloc == 2)
-		kfree(cp->h);
-	tcf_exts_destroy(&new_filter_result.exts);
-errout:
-	kfree(cp);
-	tcf_exts_destroy(&e);
-	return err;
-}
-
-static int
-tcindex_change(struct net *net, struct sk_buff *in_skb,
-	       struct tcf_proto *tp, unsigned long base, u32 handle,
-	       struct nlattr **tca, void **arg, bool ovr)
-{
-	struct nlattr *opt = tca[TCA_OPTIONS];
-	struct nlattr *tb[TCA_TCINDEX_MAX + 1];
-	struct tcindex_data *p = rtnl_dereference(tp->root);
-	struct tcindex_filter_result *r = *arg;
-	int err;
-
-	pr_debug("tcindex_change(tp %p,handle 0x%08x,tca %p,arg %p),opt %p,"
-	    "p %p,r %p,*arg %p\n",
-	    tp, handle, tca, arg, opt, p, r, arg ? *arg : NULL);
-
-	if (!opt)
-		return 0;
-
-	err = nla_parse_nested(tb, TCA_TCINDEX_MAX, opt, tcindex_policy, NULL);
-	if (err < 0)
-		return err;
-
-	return tcindex_set_parms(net, tp, base, handle, p, r, tb,
-				 tca[TCA_RATE], ovr);
-}
-
-static void tcindex_walk(struct tcf_proto *tp, struct tcf_walker *walker)
-{
-	struct tcindex_data *p = rtnl_dereference(tp->root);
-	struct tcindex_filter *f, *next;
-	int i;
-
-	pr_debug("tcindex_walk(tp %p,walker %p),p %p\n", tp, walker, p);
-	if (p->perfect) {
-		for (i = 0; i < p->hash; i++) {
-			if (!p->perfect[i].res.class)
-				continue;
-			if (walker->count >= walker->skip) {
-				if (walker->fn(tp, p->perfect + i, walker) < 0) {
-					walker->stop = 1;
-					return;
-				}
-			}
-			walker->count++;
-		}
-	}
-	if (!p->h)
-		return;
-	for (i = 0; i < p->hash; i++) {
-		for (f = rtnl_dereference(p->h[i]); f; f = next) {
-			next = rtnl_dereference(f->next);
-			if (walker->count >= walker->skip) {
-				if (walker->fn(tp, &f->result, walker) < 0) {
-					walker->stop = 1;
-					return;
-				}
-			}
-			walker->count++;
-		}
-	}
-}
-
-static void tcindex_destroy(struct tcf_proto *tp)
-{
-	struct tcindex_data *p = rtnl_dereference(tp->root);
-	struct tcf_walker walker;
-
-	pr_debug("tcindex_destroy(tp %p),p %p\n", tp, p);
-	walker.count = 0;
-	walker.skip = 0;
-	walker.fn = tcindex_destroy_element;
-	tcindex_walk(tp, &walker);
-
-	call_rcu(&p->rcu, __tcindex_destroy);
-}
-
-
-static int tcindex_dump(struct net *net, struct tcf_proto *tp, void *fh,
-			struct sk_buff *skb, struct tcmsg *t)
-{
-	struct tcindex_data *p = rtnl_dereference(tp->root);
-	struct tcindex_filter_result *r = fh;
-	struct nlattr *nest;
-
-	pr_debug("tcindex_dump(tp %p,fh %p,skb %p,t %p),p %p,r %p\n",
-		 tp, fh, skb, t, p, r);
-	pr_debug("p->perfect %p p->h %p\n", p->perfect, p->h);
-
-	nest = nla_nest_start(skb, TCA_OPTIONS);
-	if (nest == NULL)
-		goto nla_put_failure;
-
-	if (!fh) {
-		t->tcm_handle = ~0; /* whatever ... */
-		if (nla_put_u32(skb, TCA_TCINDEX_HASH, p->hash) ||
-		    nla_put_u16(skb, TCA_TCINDEX_MASK, p->mask) ||
-		    nla_put_u32(skb, TCA_TCINDEX_SHIFT, p->shift) ||
-		    nla_put_u32(skb, TCA_TCINDEX_FALL_THROUGH, p->fall_through))
-			goto nla_put_failure;
-		nla_nest_end(skb, nest);
-	} else {
-		if (p->perfect) {
-			t->tcm_handle = r - p->perfect;
-		} else {
-			struct tcindex_filter *f;
-			struct tcindex_filter __rcu **fp;
-			int i;
-
-			t->tcm_handle = 0;
-			for (i = 0; !t->tcm_handle && i < p->hash; i++) {
-				fp = &p->h[i];
-				for (f = rtnl_dereference(*fp);
-				     !t->tcm_handle && f;
-				     fp = &f->next, f = rtnl_dereference(*fp)) {
-					if (&f->result == r)
-						t->tcm_handle = f->key;
-				}
-			}
-		}
-		pr_debug("handle = %d\n", t->tcm_handle);
-		if (r->res.class &&
-		    nla_put_u32(skb, TCA_TCINDEX_CLASSID, r->res.classid))
-			goto nla_put_failure;
-
-		if (tcf_exts_dump(skb, &r->exts) < 0)
-			goto nla_put_failure;
-		nla_nest_end(skb, nest);
-
-		if (tcf_exts_dump_stats(skb, &r->exts) < 0)
-			goto nla_put_failure;
-	}
-
-	return skb->len;
-
-nla_put_failure:
-	nla_nest_cancel(skb, nest);
-	return -1;
-}
-
-static void tcindex_bind_class(void *fh, u32 classid, unsigned long cl)
-{
-	struct tcindex_filter_result *r = fh;
-
-	if (r && r->res.classid == classid)
-		r->res.class = cl;
-}
-
-static struct tcf_proto_ops cls_tcindex_ops __read_mostly = {
-	.kind		=	"tcindex",
-	.classify	=	tcindex_classify,
-	.init		=	tcindex_init,
-	.destroy	=	tcindex_destroy,
-	.get		=	tcindex_get,
-	.change		=	tcindex_change,
-	.delete		=	tcindex_delete,
-	.walk		=	tcindex_walk,
-	.dump		=	tcindex_dump,
-	.bind_class	=	tcindex_bind_class,
-	.owner		=	THIS_MODULE,
-};
-
-static int __init init_tcindex(void)
-{
-	return register_tcf_proto_ops(&cls_tcindex_ops);
-}
-
-static void __exit exit_tcindex(void)
-{
-	unregister_tcf_proto_ops(&cls_tcindex_ops);
-}
-
-module_init(init_tcindex)
-module_exit(exit_tcindex)
-MODULE_LICENSE("GPL");



  parent reply	other threads:[~2023-03-10 13:51 UTC|newest]

Thread overview: 198+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-10 13:36 [PATCH 4.14 000/193] 4.14.308-rc1 review Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 001/193] ARM: dts: rockchip: add power-domains property to dp node on rk3288 Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 002/193] btrfs: send: limit number of clones and allocated memory size Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 003/193] IB/hfi1: Assign npages earlier Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 004/193] net: Remove WARN_ON_ONCE(sk->sk_forward_alloc) from sk_stream_kill_queues() Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 005/193] bpf: Do not use ax register in interpreter on div/mod Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 006/193] bpf: fix subprog verifier bypass by div/mod by 0 exception Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 007/193] bpf: Fix 32 bit src register truncation on div/mod Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 008/193] bpf: Fix truncation handling for mod32 dst reg wrt zero Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 009/193] dmaengine: sh: rcar-dmac: Check for error num after dma_set_max_seg_size Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 010/193] USB: serial: option: add support for VW/Skoda "Carstick LTE" Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 011/193] USB: core: Dont hold device lock while reading the "descriptors" sysfs file Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 012/193] HID: asus: Remove check for same LED brightness on set Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 013/193] HID: asus: use spinlock to protect concurrent accesses Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 014/193] HID: asus: use spinlock to safely schedule workers Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 015/193] ARM: OMAP2+: Fix memory leak in realtime_counter_init() Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 016/193] ARM: zynq: Fix refcount leak in zynq_early_slcr_init Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 017/193] arm64: dts: meson-gx: Fix Ethernet MAC address unit name Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 018/193] arm64: dts: meson-gx: Fix the SCPI DVFS node name and unit address Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 019/193] ARM: OMAP1: call platform_device_put() in error case in omap1_dm_timer_init() Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 020/193] ARM: dts: exynos: correct wr-active property in Exynos3250 Rinato Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 021/193] arm64: dts: amlogic: meson-gx: fix SCPI clock dvfs node name Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 022/193] arm64: dts: amlogic: meson-gx: add missing unit address to rng " Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 023/193] arm64: dts: amlogic: meson-gxl: add missing unit address to eth-phy-mux " Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 024/193] block: bio-integrity: Copy flags when bio_integrity_payload is cloned Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 025/193] wifi: libertas: fix memory leak in lbs_init_adapter() Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 026/193] wifi: rtl8xxxu: dont call dev_kfree_skb() under spin_lock_irqsave() Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 027/193] wifi: ipw2200: fix memory leak in ipw_wdev_init() Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 028/193] wifi: brcmfmac: fix potential memory leak in brcmf_netdev_start_xmit() Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 029/193] wifi: brcmfmac: unmap dma buffer in brcmf_msgbuf_alloc_pktid() Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 030/193] wifi: libertas: main: dont call kfree_skb() under spin_lock_irqsave() Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 031/193] wifi: libertas: cmdresp: " Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 032/193] wifi: wl3501_cs: " Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 033/193] genirq: Fix the return type of kstat_cpu_irqs_sum() Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 034/193] lib/mpi: Fix buffer overrun when SG is too long Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 035/193] ACPICA: nsrepair: handle cases without a return value correctly Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 036/193] wifi: orinoco: check return value of hermes_write_wordrec() Greg Kroah-Hartman
2023-03-10 13:36 ` [PATCH 4.14 037/193] wifi: ath9k: htc_hst: free skb in ath9k_htc_rx_msg() if there is no callback function Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 038/193] wifi: ath9k: Fix potential stack-out-of-bounds write in ath9k_wmi_rsp_callback() Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 039/193] ACPI: battery: Fix missing NUL-termination with large strings Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 040/193] crypto: seqiv - Handle EBUSY correctly Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 041/193] s390/bpf: Add expoline to tail calls Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 042/193] net/mlx5: Enhance debug print in page allocation failure Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 043/193] irqchip/alpine-msi: Fix refcount leak in alpine_msix_init_domains Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 044/193] irqchip/irq-mvebu-gicp: Fix refcount leak in mvebu_gicp_probe Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 045/193] cpufreq: davinci: Fix clk use after free Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 046/193] Bluetooth: L2CAP: Fix potential user-after-free Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 047/193] crypto: rsa-pkcs1pad - Use akcipher_request_complete Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 048/193] m68k: /proc/hardware should depend on PROC_FS Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 049/193] wifi: mwifiex: fix loop iterator in mwifiex_update_ampdu_txwinsize() Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 050/193] can: esd_usb: Move mislocated storage of SJA1000_ECC_SEG bits in case of a bus error Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 051/193] irqchip/irq-bcm7120-l2: Set IRQ_LEVEL for level triggered interrupts Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 052/193] drm: mxsfb: DRM_MXSFB should depend on ARCH_MXS || ARCH_MXC Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 053/193] drm/bridge: megachips: Fix error handling in i2c_register_driver() Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 054/193] gpu: ipu-v3: common: Add of_node_put() for reference returned by of_graph_get_port_by_id() Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 055/193] drm/msm/hdmi: Add missing check for alloc_ordered_workqueue Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 056/193] pinctrl: rockchip: Fix refcount leak in rockchip_pinctrl_parse_groups Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 057/193] ALSA: hda/ca0132: minor fix for allocation size Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 058/193] drm/mipi-dsi: Fix byte order of 16-bit DCS set/get brightness Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 059/193] drm/mediatek: Drop unbalanced obj unref Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 060/193] ASoC: soc-compress.c: fixup private_data on snd_soc_new_compress() Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 061/193] gpio: vf610: connect GPIO label to dev name Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 062/193] hwmon: (ltc2945) Handle error case in ltc2945_value_store Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 063/193] scsi: aic94xx: Add missing check for dma_map_single() Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 064/193] dm: remove flush_scheduled_work() during local_exit() Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 065/193] mfd: pcf50633-adc: Fix potential memleak in pcf50633_adc_async_read() Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 066/193] mtd: rawnand: sunxi: Fix the size of the last OOB region Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 067/193] Input: ads7846 - dont report pressure for ads7845 Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 068/193] Input: ads7846 - dont check penirq immediately for 7845 Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 069/193] powerpc/powernv/ioda: Skip unallocated resources when mapping to PE Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 070/193] powerpc/pseries/lparcfg: add missing RTAS retry status handling Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 071/193] MIPS: vpe-mt: drop physical_memsize Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 072/193] media: platform: ti: Add missing check for devm_regulator_get Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 073/193] media: rc: Fix use-after-free bugs caused by ene_tx_irqsim() Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 074/193] media: usb: siano: Fix use after free bugs caused by do_submit_urb Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 075/193] rpmsg: glink: Avoid infinite loop on intent for missing channel Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 076/193] udf: Define EFSCORRUPTED error code Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 077/193] ARM: dts: exynos: Use Exynos5420 compatible for the MIPI video phy Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 078/193] wifi: brcmfmac: Fix potential stack-out-of-bounds in brcmf_c_preinit_dcmds() Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 079/193] rcu: Suppress smp_processor_id() complaint in synchronize_rcu_expedited_wait() Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 080/193] thermal: intel: Fix unsigned comparison with less than zero Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 081/193] timers: Prevent union confusion from unexpected restart_syscall() Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 082/193] x86/bugs: Reset speculation control settings on init Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 083/193] inet: fix fast path in __inet_hash_connect() Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 084/193] ACPI: Dont build ACPICA with -Os Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 085/193] net: bcmgenet: Add a check for oversized packets Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 086/193] m68k: Check syscall_trace_enter() return code Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 087/193] ACPI: video: Fix Lenovo Ideapad Z570 DMI match Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 088/193] drm/radeon: free iio for atombios when driver shutdown Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 089/193] drm/msm/dsi: Add missing check for alloc_ordered_workqueue Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 090/193] docs/scripts/gdb: add necessary make scripts_gdb step Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 091/193] ASoC: kirkwood: Iterate over array indexes instead of using pointer math Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 092/193] regulator: max77802: Bounds check regulator id against opmode Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 093/193] regulator: s5m8767: Bounds check id indexing into arrays Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 094/193] pinctrl: at91: use devm_kasprintf() to avoid potential leaks Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 095/193] dm thin: add cond_resched() to various workqueue loops Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 096/193] dm cache: " Greg Kroah-Hartman
2023-03-10 13:37 ` [PATCH 4.14 097/193] spi: bcm63xx-hsspi: Fix multi-bit mode setting Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 098/193] wifi: rtl8xxxu: fixing transmisison failure for rtl8192eu Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 099/193] rtc: pm8xxx: fix set-alarm race Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 100/193] s390/kprobes: fix irq mask clobbering on kprobe reenter from post_handler Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 101/193] s390/kprobes: fix current_kprobe never cleared after kprobes reenter Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 102/193] hfs: fix missing hfs_bnode_get() in __hfs_bnode_create Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 103/193] fs: hfsplus: fix UAF issue in hfsplus_put_super Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 104/193] f2fs: fix information leak in f2fs_move_inline_dirents() Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 105/193] ocfs2: fix defrag path triggering jbd2 ASSERT Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 106/193] ocfs2: fix non-auto defrag path not working issue Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 107/193] udf: Truncate added extents on failed expansion Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 108/193] udf: Do not bother merging very long extents Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 109/193] udf: Do not update file length for failed writes to inline files Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 110/193] udf: Fix file corruption when appending just after end of preallocated extent Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 111/193] x86/virt: Force GIF=1 prior to disabling SVM (for reboot flows) Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 112/193] x86/crash: Disable virt in core NMI crash handler to avoid double shootdown Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 113/193] x86/reboot: Disable virtualization in an emergency if SVM is supported Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 114/193] x86/reboot: Disable SVM, not just VMX, when stopping CPUs Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 115/193] x86/kprobes: Fix __recover_optprobed_insn check optimizing logic Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 116/193] x86/kprobes: Fix arch_check_optimized_kprobe check within optimized_kprobe range Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 117/193] x86/microcode/amd: Remove load_microcode_amd()s bsp parameter Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 118/193] x86/microcode/AMD: Add a @cpu parameter to the reloading functions Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 119/193] x86/microcode/AMD: Fix mixed steppings support Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 120/193] x86/speculation: Allow enabling STIBP with legacy IBRS Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 121/193] Documentation/hw-vuln: Document the interaction between IBRS and STIBP Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 122/193] ima: Align ima_file_mmap() parameters with mmap_file LSM hook Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 123/193] irqdomain: Fix association race Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 124/193] irqdomain: Fix disassociation race Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 125/193] irqdomain: Drop bogus fwspec-mapping error handling Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 126/193] ALSA: ice1712: Do not left ice->gpio_mutex locked in aureon_add_controls() Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 127/193] ext4: optimize ea_inode block expansion Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 128/193] ext4: refuse to create ea block when umounted Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 129/193] wifi: rtl8xxxu: Use a longer retry limit of 48 Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 130/193] wifi: cfg80211: Fix use after free for wext Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 131/193] dm flakey: fix logic when corrupting a bio Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 132/193] dm flakey: dont corrupt the zero page Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 133/193] ARM: dts: exynos: correct TMU phandle in Exynos4 Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 134/193] ARM: dts: exynos: correct TMU phandle in Odroid XU Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 135/193] rbd: avoid use-after-free in do_rbd_add() when rbd_dev_create() fails Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 136/193] alpha: fix FEN fault handling Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 137/193] mips: fix syscall_get_nr Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 138/193] ktest.pl: Fix missing "end_monitor" when machine check fails Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 139/193] scsi: qla2xxx: Fix link failure in NPIV environment Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 140/193] scsi: qla2xxx: Fix erroneous link down Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 141/193] scsi: ses: Dont attach if enclosure has no components Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 142/193] scsi: ses: Fix slab-out-of-bounds in ses_enclosure_data_process() Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 143/193] scsi: ses: Fix possible addl_desc_ptr out-of-bounds accesses Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 144/193] scsi: ses: Fix possible desc_ptr " Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 145/193] scsi: ses: Fix slab-out-of-bounds in ses_intf_remove() Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 146/193] PCI: Avoid FLR for AMD FCH AHCI adapters Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 147/193] drm/radeon: Fix eDP for single-display iMac11,2 Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 148/193] kbuild: Port silent mode detection to future gnu make Greg Kroah-Hartman
2023-03-10 13:38 ` Greg Kroah-Hartman [this message]
2023-03-10 13:38 ` [PATCH 4.14 150/193] fs/jfs: fix shift exponent db_agl2size negative Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 151/193] pwm: stm32-lp: fix the check on arr and cmp registers update Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 152/193] ubi: ensure that VID header offset + VID header size <= alloc, size Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 153/193] ubifs: Rectify space budget for ubifs_xrename() Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 154/193] ubifs: Fix wrong dirty space budget for dirty inode Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 155/193] ubifs: Reserve one leb for each journal head while doing budget Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 156/193] ubi: Fix use-after-free when volume resizing failed Greg Kroah-Hartman
2023-03-10 13:38 ` [PATCH 4.14 157/193] ubi: Fix unreferenced object reported by kmemleak in ubi_resize_volume() Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 158/193] ubi: Fix possible null-ptr-deref in ubi_free_volume() Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 159/193] ubifs: Re-statistic cleaned znode count if commit failed Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 160/193] ubifs: dirty_cow_znode: Fix memleak in error handling path Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 161/193] ubifs: ubifs_writepage: Mark page dirty after writing inode failed Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 162/193] ubi: Fix UAF wear-leveling entry in eraseblk_count_seq_show() Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 163/193] ubi: ubi_wl_put_peb: Fix infinite loop when wear-leveling work failed Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 164/193] x86: um: vdso: Add %rcx and %r11 to the syscall clobber list Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 165/193] watchdog: at91sam9_wdt: use devm_request_irq to avoid missing free_irq() in error path Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 166/193] watchdog: Fix kmemleak in watchdog_cdev_register Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 167/193] watchdog: pcwd_usb: Fix attempting to access uninitialized memory Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 168/193] netfilter: ctnetlink: fix possible refcount leak in ctnetlink_create_conntrack() Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 169/193] net: fix __dev_kfree_skb_any() vs drop monitor Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 170/193] 9p/xen: fix version parsing Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 171/193] 9p/xen: fix connection sequence Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 172/193] nfc: fix memory leak of se_io context in nfc_genl_se_io Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 173/193] ARM: dts: spear320-hmi: correct STMPE GPIO compatible Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 174/193] tcp: tcp_check_req() can be called from process context Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 175/193] scsi: ipr: Work around fortify-string warning Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 176/193] thermal: intel: quark_dts: fix error pointer dereference Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 177/193] tracing: Add NULL checks for buffer in ring_buffer_free_read_page() Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 178/193] firmware/efi sysfb_efi: Add quirk for Lenovo IdeaPad Duet 3 Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 179/193] media: uvcvideo: Handle cameras with invalid descriptors Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 180/193] tty: fix out-of-bounds access in tty_driver_lookup_tty() Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 181/193] tty: serial: fsl_lpuart: disable the CTS when send break signal Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 182/193] tools/iio/iio_utils:fix memory leak Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 183/193] iio: accel: mma9551_core: Prevent uninitialized variable in mma9551_read_status_word() Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 184/193] iio: accel: mma9551_core: Prevent uninitialized variable in mma9551_read_config_word() Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 185/193] usb: host: xhci: mvebu: Iterate over array indexes instead of using pointer math Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 186/193] USB: ene_usb6250: Allocate enough memory for full object Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 187/193] usb: uvc: Enumerate valid values for color matching Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 188/193] phy: rockchip-typec: Fix unsigned comparison with less than zero Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 189/193] Bluetooth: hci_sock: purge socket queues in the destruct() callback Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 190/193] s390/maccess: add no DAT mode to kernel_write Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 191/193] s390/setup: init jump labels before command line parsing Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 192/193] tcp: Fix listen() regression in 4.14.303 Greg Kroah-Hartman
2023-03-10 13:39 ` [PATCH 4.14 193/193] thermal: intel: powerclamp: Fix cur_state for multi package system Greg Kroah-Hartman
2023-03-10 21:03 ` [PATCH 4.14 000/193] 4.14.308-rc1 review Guenter Roeck
2023-03-11  9:20   ` Greg Kroah-Hartman
2023-03-11  3:26 ` Guenter Roeck
2023-03-11  7:25 ` Naresh Kamboju

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230310133716.170763905@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=jhs@mojatatu.com \
    --cc=jiri@nvidia.com \
    --cc=pabeni@redhat.com \
    --cc=patches@lists.linux.dev \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).