From 77c79fbd22d8896b62989df8897a879e5feb47fa Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 7 Jun 2022 11:44:38 +0200 Subject: [PATCH] 4.14-stable patches added patches: rdma-rxe-generate-a-completion-for-unsupported-invalid-opcode.patch --- ...etion-for-unsupported-invalid-opcode.patch | 35 +++++++++ ...dom-use-static-branch-for-crng_ready.patch | 73 ------------------- queue-4.14/series | 2 +- 3 files changed, 36 insertions(+), 74 deletions(-) create mode 100644 queue-4.14/rdma-rxe-generate-a-completion-for-unsupported-invalid-opcode.patch delete mode 100644 queue-4.14/revert-random-use-static-branch-for-crng_ready.patch diff --git a/queue-4.14/rdma-rxe-generate-a-completion-for-unsupported-invalid-opcode.patch b/queue-4.14/rdma-rxe-generate-a-completion-for-unsupported-invalid-opcode.patch new file mode 100644 index 00000000000..d72d335ba67 --- /dev/null +++ b/queue-4.14/rdma-rxe-generate-a-completion-for-unsupported-invalid-opcode.patch @@ -0,0 +1,35 @@ +From 2f917af777011c88e977b9b9a5d00b280d3a59ce Mon Sep 17 00:00:00 2001 +From: Xiao Yang +Date: Sun, 10 Apr 2022 19:35:13 +0800 +Subject: RDMA/rxe: Generate a completion for unsupported/invalid opcode + +From: Xiao Yang + +commit 2f917af777011c88e977b9b9a5d00b280d3a59ce upstream. + +Current rxe_requester() doesn't generate a completion when processing an +unsupported/invalid opcode. If rxe driver doesn't support a new opcode +(e.g. RDMA Atomic Write) and RDMA library supports it, an application +using the new opcode can reproduce this issue. Fix the issue by calling +"goto err;". + +Fixes: 8700e3e7c485 ("Soft RoCE driver") +Link: https://lore.kernel.org/r/20220410113513.27537-1-yangx.jy@fujitsu.com +Signed-off-by: Xiao Yang +Signed-off-by: Jason Gunthorpe +Signed-off-by: Greg Kroah-Hartman +--- + drivers/infiniband/sw/rxe/rxe_req.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/infiniband/sw/rxe/rxe_req.c ++++ b/drivers/infiniband/sw/rxe/rxe_req.c +@@ -680,7 +680,7 @@ next_wqe: + opcode = next_opcode(qp, wqe, wqe->wr.opcode); + if (unlikely(opcode < 0)) { + wqe->status = IB_WC_LOC_QP_OP_ERR; +- goto exit; ++ goto err; + } + + mask = rxe_opcode[opcode].mask; diff --git a/queue-4.14/revert-random-use-static-branch-for-crng_ready.patch b/queue-4.14/revert-random-use-static-branch-for-crng_ready.patch deleted file mode 100644 index e9c9249faf8..00000000000 --- a/queue-4.14/revert-random-use-static-branch-for-crng_ready.patch +++ /dev/null @@ -1,73 +0,0 @@ -From Jason@zx2c4.com Tue Jun 7 11:12:02 2022 -From: "Jason A. Donenfeld" -Date: Tue, 7 Jun 2022 10:40:05 +0200 -Subject: Revert "random: use static branch for crng_ready()" -To: stable@vger.kernel.org, gregkh@linuxfoundation.org -Cc: "Jason A. Donenfeld" -Message-ID: <20220607084005.666059-1-Jason@zx2c4.com> - -From: "Jason A. Donenfeld" - -This reverts upstream commit f5bda35fba615ace70a656d4700423fa6c9bebee -from stable. It's not essential and will take some time during 5.19 to -work out properly. - -Signed-off-by: Jason A. Donenfeld ---- - drivers/char/random.c | 12 ++---------- - 1 file changed, 2 insertions(+), 10 deletions(-) - -diff --git a/drivers/char/random.c b/drivers/char/random.c -index 7a66eec08e37..0cfbfa8d5b50 100644 ---- a/drivers/char/random.c -+++ b/drivers/char/random.c -@@ -78,8 +78,7 @@ static enum { - CRNG_EARLY = 1, /* At least POOL_EARLY_BITS collected */ - CRNG_READY = 2 /* Fully initialized with POOL_READY_BITS collected */ - } crng_init __read_mostly = CRNG_EMPTY; --static DEFINE_STATIC_KEY_FALSE(crng_is_ready); --#define crng_ready() (static_branch_likely(&crng_is_ready) || crng_init >= CRNG_READY) -+#define crng_ready() (likely(crng_init >= CRNG_READY)) - /* Various types of waiters for crng_init->CRNG_READY transition. */ - static DECLARE_WAIT_QUEUE_HEAD(crng_init_wait); - static struct fasync_struct *fasync; -@@ -109,11 +108,6 @@ bool rng_is_initialized(void) - } - EXPORT_SYMBOL(rng_is_initialized); - --static void __cold crng_set_ready(struct work_struct *work) --{ -- static_branch_enable(&crng_is_ready); --} -- - /* Used by wait_for_random_bytes(), and considered an entropy collector, below. */ - static void try_to_generate_entropy(void); - -@@ -267,7 +261,7 @@ static void crng_reseed(void) - ++next_gen; - WRITE_ONCE(base_crng.generation, next_gen); - WRITE_ONCE(base_crng.birth, jiffies); -- if (!static_branch_likely(&crng_is_ready)) -+ if (!crng_ready()) - crng_init = CRNG_READY; - spin_unlock_irqrestore(&base_crng.lock, flags); - memzero_explicit(key, sizeof(key)); -@@ -710,7 +704,6 @@ static void extract_entropy(void *buf, size_t len) - - static void __cold _credit_init_bits(size_t bits) - { -- static struct execute_work set_ready; - unsigned int new, orig, add; - unsigned long flags; - -@@ -726,7 +719,6 @@ static void __cold _credit_init_bits(size_t bits) - - if (orig < POOL_READY_BITS && new >= POOL_READY_BITS) { - crng_reseed(); /* Sets crng_init to CRNG_READY under base_crng.lock. */ -- execute_in_process_context(crng_set_ready, &set_ready); - process_random_ready_list(); - wake_up_interruptible(&crng_init_wait); - kill_fasync(&fasync, SIGIO, POLL_IN); --- -2.35.1 - diff --git a/queue-4.14/series b/queue-4.14/series index 6c5593cd4af..94905b7d5df 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -135,4 +135,4 @@ phy-qcom-qmp-fix-struct-clk-leak-on-probe-errors.patch docs-conf.py-cope-with-removal-of-language-none-in-sphinx-5.0.0.patch dt-bindings-gpio-altera-correct-interrupt-cells.patch phy-qcom-qmp-fix-reset-controller-leak-on-probe-errors.patch -revert-random-use-static-branch-for-crng_ready.patch +rdma-rxe-generate-a-completion-for-unsupported-invalid-opcode.patch -- 2.47.3