Re: [PATCH net-next v2 2/6] net/sched: flower: Move filter handle initialization earlier
From: Jakub Kicinski <kuba@kernel.org>
Date: 2023-01-18 03:51:16
From: Jakub Kicinski <kuba@kernel.org>
Date: 2023-01-18 03:51:16
On Tue, 17 Jan 2023 10:33:40 +0200 Paul Blakey wrote:
+ if (!fold) {
+ spin_lock(&tp->lock);
+ if (!handle) {
+ handle = 1;
+ err = idr_alloc_u32(&head->handle_idr, fnew, &handle,
+ INT_MAX, GFP_ATOMIC);
+ if (err)
+ goto errout;sparse says you should release the spin lock
+ } else {
+ err = idr_alloc_u32(&head->handle_idr, fnew, &handle,
+ handle, GFP_ATOMIC);
+
+ /* Filter with specified handle was concurrently
+ * inserted after initial check in cls_api. This is not
+ * necessarily an error if NLM_F_EXCL is not set in
+ * message flags. Returning EAGAIN will cause cls_api to
+ * try to update concurrently inserted rule.
+ */
+ if (err == -ENOSPC)
+ err = -EAGAIN;
+ }
+ spin_unlock(&tp->lock);
+
+ if (err)
+ goto errout;
+ }
+ fnew->handle = handle;
+
+ err = tcf_exts_init(&fnew->exts, net, TCA_FLOWER_ACT, 0);
+ if (err < 0)
+ goto errout_idr;