2CsUGYIuFNvBqN4RCcIQXv/M+vG73AtevBXSjiImiV3yGMg1sJNSW4LVtMhjncINXyjalwJkjKgNHh8Cc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=cloudlinux.com; spf=pass smtp.mailfrom=cloudlinux.com; dkim=pass (2048-bit key) header.d=cloudlinux.com header.i=@cloudlinux.com header.b=Gmyp87Eg; arc=none smtp.client-ip=209.85.210.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=cloudlinux.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cloudlinux.com Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-8249cb73792so4039751b3a.3 for ; Mon, 23 Feb 2026 09:24:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cloudlinux.com; s=google; t=1771867461; x=1772472261; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kovlhYTHEWCe+6Hv08nwU/ged3f6bHNO5rTkjbt/oo8=; b=Gmyp87EgmrNPG5tThDQx1cfGlbZ/n/z5V5ycOLSiaxPKFb90k46ismMEI+EadZ75gM xs63o1tlO0uMnrRLKK6XxoGL9k8niaIZxrMbwQSyD5e4StOasq+lvoC1b0AWWBc++kNw QAvsbs8ObbNMgb+3f3xd0gAcO7Q8RWKIUFYohUvOc1Q1tl0qromNyehQVoYW8F/TvtfZ JPHVjgclgKFu05dHKI5eDNDA2vCkqnhN5sR3p3NeoWIhb/e+2AnXW0f5DgV+Q1iEZaDL n/pgVOgpxEN8PWvpVOXluufKdL9fZjCig2m+qIKpSxVVyy+xiU6ZIeJKbhHEDdA0a3dD YU6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771867461; x=1772472261; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=kovlhYTHEWCe+6Hv08nwU/ged3f6bHNO5rTkjbt/oo8=; b=cD/PBgZH66UIagNhvN0BTCqksqGvJ4Cp48xv/lejjeqSM8VA7MxR5cJ/z4LxH/APu7 1C7aZ/A8rxTAGGyyccfnfzTTl0Dq//TORQ/OaRBvdyepphqAaqNbEbDKyHxRAf+WEQTB eSG3rlAwaYeKtZB+5e7CZah/DR6cHpMsswtThxCkZjLqPCCRiyWKVXK9YG2iamsfFNWE QYkn4/b+ZHS6T1ZofpP0HlYV6pn6OwN3GlYNuKt3AdD1ewHzA+nOP/7Aovxz5UVxhciy FEGJV391rmRco9yWVIvhdK9eMV/PNYYZ+rIkCaKLAMwRbzsUqkrj088b8wxEocF5BRbt XNXw== X-Gm-Message-State: AOJu0YxwVJSXP8B0k3w7U49iPWuJw/khcctpjxoCJn7NzX1reHKo4TLY AuLJfnMMkiV2ds/j6WV9tPZpaWhL4iR+hBbUZBkwrq0LUhlWdlznf/copx/hmQ8Zl6lib7mVFyw LckGV X-Gm-Gg: AZuq6aIHlDaGV4RKtyw90gTkgY0C1tPBRu1Bwl1BqQn+SvMiz4eSG6/GtOqEfijjPeB cLYaZfPa+Ot+/tgkQA1nwM3ix6vwLa6Jt/t7YUNyiJqar7DjtNh3qZtQR5pJdTjVMi0LloBAAa6 T96F448masOaHn7s0vIGx5LmCz8CTUPsbDRHt8D64dx1PaoGeL1mD72jIDlSTRAtffVzXs2c+Ad +F3N07kkHnbfBkvfrIejHV3k7vIv2/TIHARi7DWC4p36dP57YaD6WzUerTua+u9uPtaZii43lXT MAOhEKO1EhqobfPXFXcbXQ8TtL2yBO6y4cTB4eQtZJpeBweF/oBm4cDvOBkMsDq0URVVNvyfIFK 1SC07n3pFR5t35sy4hOaVqnOtscy41+ul2CqWc+9ANtirZFtIGlDebuUc3hqQb1tfbmed8OPvJD 8ngMYpbVkbSrix+LT65dG0PsLv0ZM2JEQ= X-Received: by 2002:a05:6a20:9f96:b0:366:14ac:e1dd with SMTP id adf61e73a8af0-39545fc297dmr8671445637.67.1771867460985; Mon, 23 Feb 2026 09:24:20 -0800 (PST) Received: from outpost.localdomain ([110.44.9.85]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c70b724321esm7802332a12.16.2026.02.23.09.24.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Feb 2026 09:24:20 -0800 (PST) From: Jaskaran Singh To: stable@vger.kernel.org, james.smart@broadcom.com, kbusch@kernel.org, axboe@fb.com, hch@lst.de, sagi@grimberg.me Cc: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org, Jaskaran Singh , Marco Patalano , Justin Tee , "Ewan D . Milne" Subject: [PATCH 6.1.y 2/2] nvme: nvme-fc: Ensure ->ioerr_work is cancelled in nvme_fc_delete_ctrl() Date: Mon, 23 Feb 2026 22:54:05 +0530 Message-Id: <20260223172405.292040-3-jsingh@cloudlinux.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260223172405.292040-1-jsingh@cloudlinux.com> References: <20260223172405.292040-1-jsingh@cloudlinux.com> Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-DKIM: signer='cloudlinux.com' status='pass' reason='' DKIMCheck: Server passes DKIM test, 0 Spam score X-Spam-Score: 0.4 (/) X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has performed the tests listed below against this email. Information: https://docs.mxroute.com/docs/expert-spam-filtering.html --- Content analysis details: (0.4 points) --- pts rule name description ---- ---------------------- ----------------------------------------- 0.0 URIBL_DBL_BLOCKED_OPENDNS ADMINISTRATOR NOTICE: The query to dbl.spamhaus.org was blocked due to usage of an open resolver. See https://www.spamhaus.org/returnc/pub/ [URIs: cloudlinux.com] 0.0 RCVD_IN_ZEN_BLOCKED_OPENDNS RBL: ADMINISTRATOR NOTICE: The query to zen.spamhaus.org was blocked due to usage of an open resolver. See https://www.spamhaus.org/returnc/pub/ [172.105.105.114 listed in zen.spamhaus.org] 1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.0 URIBL_ZEN_BLOCKED_OPENDNS ADMINISTRATOR NOTICE: The query to zen.spamhaus.org was blocked due to usage of an open resolver. See https://www.spamhaus.org/returnc/pub/ [URIs: cloudlinux.com] 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager SpamTally: Final spam score: 4 commit 0a2c5495b6d1ecb0fa18ef6631450f391a888256 upstream. nvme_fc_delete_assocation() waits for pending I/O to complete before returning, and an error can cause ->ioerr_work to be queued after cancel_work_sync() had been called. Move the call to cancel_work_sync() to be after nvme_fc_delete_association() to ensure ->ioerr_work is not running when the nvme_fc_ctrl object is freed. Otherwise the following can occur: [ 1135.911754] list_del corruption, ff2d24c8093f31f8->next is NULL [ 1135.917705] ------------[ cut here ]------------ [ 1135.922336] kernel BUG at lib/list_debug.c:52! [ 1135.926784] Oops: invalid opcode: 0000 [#1] SMP NOPTI [ 1135.931851] CPU: 48 UID: 0 PID: 726 Comm: kworker/u449:23 Kdump: loaded Not tainted 6.12.0 #1 PREEMPT(voluntary) [ 1135.943490] Hardware name: Dell Inc. PowerEdge R660/0HGTK9, BIOS 2.5.4 01/16/2025 [ 1135.950969] Workqueue: 0x0 (nvme-wq) [ 1135.954673] RIP: 0010:__list_del_entry_valid_or_report.cold+0xf/0x6f [ 1135.961041] Code: c7 c7 98 68 72 94 e8 26 45 fe ff 0f 0b 48 c7 c7 70 68 72 94 e8 18 45 fe ff 0f 0b 48 89 fe 48 c7 c7 80 69 72 94 e8 07 45 fe ff <0f> 0b 48 89 d1 48 c7 c7 a0 6a 72 94 48 89 c2 e8 f3 44 fe ff 0f 0b [ 1135.979788] RSP: 0018:ff579b19482d3e50 EFLAGS: 00010046 [ 1135.985015] RAX: 0000000000000033 RBX: ff2d24c8093f31f0 RCX: 0000000000000000 [ 1135.992148] RDX: 0000000000000000 RSI: ff2d24d6bfa1d0c0 RDI: ff2d24d6bfa1d0c0 [ 1135.999278] RBP: ff2d24c8093f31f8 R08: 0000000000000000 R09: ffffffff951e2b08 [ 1136.006413] R10: ffffffff95122ac8 R11: 0000000000000003 R12: ff2d24c78697c100 [ 1136.013546] R13: fffffffffffffff8 R14: 0000000000000000 R15: ff2d24c78697c0c0 [ 1136.020677] FS: 0000000000000000(0000) GS:ff2d24d6bfa00000(0000) knlGS:0000000000000000 [ 1136.028765] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 1136.034510] CR2: 00007fd207f90b80 CR3: 000000163ea22003 CR4: 0000000000f73ef0 [ 1136.041641] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 1136.048776] DR3: 0000000000000000 DR6: 00000000fffe07f0 DR7: 0000000000000400 [ 1136.055910] PKRU: 55555554 [ 1136.058623] Call Trace: [ 1136.061074] [ 1136.063179] ? show_trace_log_lvl+0x1b0/0x2f0 [ 1136.067540] ? show_trace_log_lvl+0x1b0/0x2f0 [ 1136.071898] ? move_linked_works+0x4a/0xa0 [ 1136.075998] ? __list_del_entry_valid_or_report.cold+0xf/0x6f [ 1136.081744] ? __die_body.cold+0x8/0x12 [ 1136.085584] ? die+0x2e/0x50 [ 1136.088469] ? do_trap+0xca/0x110 [ 1136.091789] ? do_error_trap+0x65/0x80 [ 1136.095543] ? __list_del_entry_valid_or_report.cold+0xf/0x6f [ 1136.101289] ? exc_invalid_op+0x50/0x70 [ 1136.105127] ? __list_del_entry_valid_or_report.cold+0xf/0x6f [ 1136.110874] ? asm_exc_invalid_op+0x1a/0x20 [ 1136.115059] ? __list_del_entry_valid_or_report.cold+0xf/0x6f [ 1136.120806] move_linked_works+0x4a/0xa0 [ 1136.124733] worker_thread+0x216/0x3a0 [ 1136.128485] ? __pfx_worker_thread+0x10/0x10 [ 1136.132758] kthread+0xfa/0x240 [ 1136.135904] ? __pfx_kthread+0x10/0x10 [ 1136.139657] ret_from_fork+0x31/0x50 [ 1136.143236] ? __pfx_kthread+0x10/0x10 [ 1136.146988] ret_from_fork_asm+0x1a/0x30 [ 1136.150915] Fixes: 19fce0470f05 ("nvme-fc: avoid calling _nvme_fc_abort_outstanding_ios from interrupt context") Cc: stable@vger.kernel.org Tested-by: Marco Patalano Reviewed-by: Justin Tee Signed-off-by: Ewan D. Milne Signed-off-by: Keith Busch Signed-off-by: Greg Kroah-Hartman Signed-off-by: Jaskaran Singh --- drivers/nvme/host/fc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c index 9b5976c80803..a355db38edc8 100644 --- a/drivers/nvme/host/fc.c +++ b/drivers/nvme/host/fc.c @@ -3264,13 +3264,13 @@ nvme_fc_delete_ctrl(struct nvme_ctrl *nctrl) { struct nvme_fc_ctrl *ctrl = to_fc_ctrl(nctrl); - cancel_work_sync(&ctrl->ioerr_work); cancel_delayed_work_sync(&ctrl->connect_work); /* * kill the association on the link side. this will block * waiting for io to terminate */ nvme_fc_delete_association(ctrl); + cancel_work_sync(&ctrl->ioerr_work); } static void -- 2.43.7 From - Mon Feb 23 17:28:52 2026 X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 Return-Path: Delivered-To: hi@josie.lol Received: from witcher.mxrouting.net by witcher.mxrouting.net with LMTP id gJxbClCOnGkNVToAYBR5ng (envelope-from ) for ; Mon, 23 Feb 2026 17:28:48 +0000 Return-path: Envelope-to: hi@josie.lol Delivery-date: Mon, 23 Feb 2026 17:28:48 +0000 Received: from sea.lore.kernel.org ([172.234.253.10]) by witcher.mxrouting.net with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.98) (envelope-from ) id 1vuZjj-0000000GmUt-2bzL for hi@josie.lol; Mon, 23 Feb 2026 17:28:48 +0000 Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sea.lore.kernel.org (Postfix) with ESMTP id 80B4C3029E58 for ; Mon, 23 Feb 2026 17:22:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0850C33121E; Mon, 23 Feb 2026 17:22:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="qr+WzQzQ"essionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Calling MCP tool: close_tab","timestamp":"2025-12-22T21:21:31.559Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Calling MCP tool: getDiagnostics","timestamp":"2025-12-22T21:21:31.560Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Tool 'getDiagnostics' completed successfully in 8ms","timestamp":"2025-12-22T21:21:31.568Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Tool 'openDiff' completed successfully in 2s","timestamp":"2025-12-22T21:21:31.595Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Calling MCP tool: close_tab","timestamp":"2025-12-22T21:21:31.595Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Tool 'close_tab' completed successfully in 37ms","timestamp":"2025-12-22T21:21:31.596Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Tool 'close_tab' completed successfully in 6ms","timestamp":"2025-12-22T21:21:31.601Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Calling MCP tool: getDiagnostics","timestamp":"2025-12-22T21:21:31.617Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Tool 'getDiagnostics' completed successfully in 1ms","timestamp":"2025-12-22T21:21:31.618Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Calling MCP tool: getDiagnostics","timestamp":"2025-12-22T21:21:40.658Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Tool 'getDiagnostics' completed successfully in 10ms","timestamp":"2025-12-22T21:21:40.668Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Calling MCP tool: getDiagnostics","timestamp":"2025-12-22T21:22:03.934Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Tool 'getDiagnostics' completed successfully in 4ms","timestamp":"2025-12-22T21:22:03.938Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Calling MCP tool: getDiagnostics","timestamp":"2025-12-22T21:22:12.725Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Tool 'getDiagnostics' completed successfully in 9ms","timestamp":"2025-12-22T21:22:12.734Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Calling MCP tool: getDiagnostics","timestamp":"2025-12-22T21:22:17.781Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Tool 'getDiagnostics' completed successfully in 3ms","timestamp":"2025-12-22T21:22:17.784Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Calling MCP tool: getDiagnostics","timestamp":"2025-12-22T21:22:22.367Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Tool 'getDiagnostics' completed successfully in 1ms","timestamp":"2025-12-22T21:22:22.368Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Calling MCP tool: getDiagnostics","timestamp":"2025-12-22T21:22:22.411Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/development/josiedot/health"} {"debug":"Tool 'getDiagnostics' completed successfully in 3ms","timestamp":"2025-12-22T21:22:22.414Z","sessionId":"faa0c55e-a59b-41fd-82ad-e9be489dbb09","cwd":"/home/josie/d--- 0.2.0 rack:~> 0.4|checksum:6fe4383b49d07dc850eee26e54eaa4b6cf0c314cd879afa51b07f30c97f69ba0 0.3.0 rack:~> 0.4|checksum:47175929c5fc5b48cdd8461729f36c863add915231f3470e6849d776fe78371b 0.4 rack:~> 0.4|checksum:6d00c77609b882f3c307e52540915d62d648196e5dd6979c7904b5be1f0603f2 0.5 rack:>= 0.4|checksum:fb5e5a095aca930a8be1ffb851eb537e55fd19d25c565175c64a95e5b2a3c8c9 0.5.2 rack:>= 0.4|checksum:7fb3e3deaacfb583830d0f334021a77be63f524778c8e734d1cd972700d541db 0.5.3 rack:>= 0.4|checksum:16d41b5392c046531f34c38975466688067106eb973e720a8adcaeab9056d9ef 1.0 rack:>= 0.4|checksum:432a458de848235b83925e6c5aa1c8c84d6e5cbb44657ee43ba3bfcd434bf05b 1.0.1 rack:>= 0.4|checksum:f236c921a4b1877fadfbb8f62a7a4f171a6b4b0d294dbd4daee9ac986c2a856f 1.0.2 rack:>= 0.4|checksum:0a4c86db32db807764a254cab8edf5b55289d15793cb4ac256776e8051c2ea36 1.0.3 rack:>= 0.4|checksum:5c90862b359698982f9cc8b259e32ad01dfa48330bdf8930fe000d429c1618a1 1.1 rack:>= 0.4|checksum:34effcdccb0f4999d72742f9b539c20330ba87947783dd1a3fd2718c48f55422 1.2 rack:>= 0.4|checksum:02bfed05f8b3266db804f2fa445801636ca2c6d211a3137ec796f88af5756e1c 1.3.0 rack:>= 0.4|checksum:e27213ba5951bafb4c70b546c5a500fb142b7828d4b050a3a09a000bc7008b10,ruby:>= 2.0.0 1.3.1 rack:>= 0.4|checksum:c1a0b417e65728efb4c7db2f7a6e537db52a9bae7d971cadd544d55381f3ff66,ruby:>= 1.9.3 1.4.0 rack:>= 0.4|checksum:2a5cab86a59d8291cfce16549a6cae9954e161efe7aa454c6b0e56e74b062dfb,ruby:>= 1.9.3 1.4.1 rack:>= 0.4|checksum:c3d81f15eb59cb5dd2df632c5a64978b41dbd4eceaabb5c2736a8f5895e4e641,ruby:>= 1.9.3 1.4.2 rack:>= 0.4|checksum:05d3adf659d1a8444995836198eaf00e7e118433d7aab3fb4ee0a7c19929ac92,ruby:>= 1.9.3 1.4.3 rack:>= 0.4|checksum:f5750b17cbb5bfc0ccebaebfef0e8d4c1e68d5c62fe02373f67f693d5f36fe85,ruby:>= 1.9.3 1.5.0 rack:>= 0.4|checksum:17478e9923d0524dc8a6084ec81a3a7b3502a788dab4c9bbeb996abd20b57e71,ruby:>= 1.9.3 1.5.1 rack:>= 0.4|checksum:64cbe38c89f0f23a7b858640336f6a0f0ab9e22c7cb64d0b7772d8cde70eb26c,ruby:>= 1.9.3 1.6.1 rack:>= 0.4|checksum:613a4e88661ea7014211d39e5f99e18f35f6aa37ac7ef96001160131c0311490,ruby:>= 1.9.3 1.7.0 rack:>= 0.4|checksum:12e21f063e49792ee59ac4b437c52ae1a1ceb991242ef11edbc2dc5aa14eb592,ruby:>= 1.9.3 1.7.1 rack:>= 0.4|checksum:43cb11d625771bd331558b19aabafacb313b4fdcb58d3f99f98a2aac0f55c945,ruby:>= 1.9.3 1.7.2 rack:>= 0.4|checksum:1e86417adffa33ad76dd355b1b162d236eba59ed9a476808267a97ae264541d1,ruby:>= 2.0.0 1.8.0 rack:>= 0.4|checksum:a4ec7cc6a883bc5998733f5899ef9c2631767e231b9f93c39567cdf68bc4da46,ruby:>= 2.0.0 1.9.0 rack:>= 0.4|checksum:e8ca0ab7e54ba748800dadc3bb495003c76b019b44f4bded5cc722e72d4892b3,ruby:>= 2.0.0 1.10.0 rack:>= 0.4|checksum:09a5e1bdff6053a4785db94f8f166f834ab28845146af409fe21897a77df886a,ruby:>= 2.3.0 1.11.0 rack:>= 0.4|checksum:673758d2649c1b6ead0fda99f2e779e8e1b422647968b5de9f06c4d31d993bec,ruby:>= 2.3.0 1.11.1 rack:>= 0.4|checksum:d4b67eee594216c5e74df531d916b4e4a0ef5ffb6d7245155b3ce37f83ce7faa,ruby:>= 2.3.0 1.12.0 rack:>= 0.4|checksum:13743a04f75f1f03c222e0ed054fc2ecc4a35a1fdf89b025df16767952634200,ruby:>= 2.3.0 1.12.1 rack:>= 0.4|checksum:96374ea80d4ff48087ec4b63f12f0647786aba4e2b55715ce378edb5050d9856,ruby:>= 2.3.0 1.13.0 rack:>= 0.4|checksum:f549b052525869b07464c100a9f6bca2f34ee760213d27b5855540244c5717b3,ruby:>= 2.3.0 1.14.0 rack:>= 0.4|checksum:403bc5d598353821e94d4c870e7927dbd61731de38bdeb75741cbb4f18c47bf9,ruby:>= 2.3.0 1.15.0 rack:>= 0.4|checksum:a59f9c7848de7d1703fae736789afb08ed849936f973f08dd177fb17a2f16c6e,ruby:>= 2.3.0 1.16.0 rack:>= 0.4|checksum:83297a508b7454830ac461f929df8c0352b15285113afbfd1cc16f68624eb502,ruby:>= 2.7.7 1.17.0 rack:>= 0.4|checksum:49592f3ef2173b0f5524df98bb801fb411e839869e7ce84ac428dc492bf0eb90,ruby:>= 2.7.7