diff --git a/meta-oe/recipes-devtools/jq/jq/CVE-2026-43895.patch b/meta-oe/recipes-devtools/jq/jq/CVE-2026-43895.patch
index efde45c710..b21f7c2806 100644
--- a/meta-oe/recipes-devtools/jq/jq/CVE-2026-43895.patch
+++ b/meta-oe/recipes-devtools/jq/jq/CVE-2026-43895.patch
@@ -22,6 +22,9 @@ Backport Changes:
 - Limited parser.c to three import/include action changes.
   The newer grammar caused unrelated generated-parser churn.
   Keeping target numbering avoids unrelated generated changes.
+- Applied the src/parser.y hunk before the generated src/parser.c hunk.
+  Otherwise parser.y is newer and make regenerates parser.c with bison.
+  Bison is disabled here, so the shipped parser.c must stay the newest.
 
 (cherry picked from commit 9d223f153c3632a207fa071caaa6292da33ae361)
 Signed-off-by: Darsh Kelaiya <dkelaiya@cisco.com>
@@ -29,8 +32,8 @@ Signed-off-by: Darsh Kelaiya <dkelaiya@cisco.com>
  src/compile.c | 12 ++++++++----
  src/compile.h |  2 +-
  src/linker.c  |  6 +++++-
- src/parser.c  | 16 +++-------------
  src/parser.y  | 16 +++-------------
+ src/parser.c  | 16 +++-------------
  tests/shtest  | 17 +++++++++++++++++
  6 files changed, 37 insertions(+), 32 deletions(-)
 
@@ -97,6 +100,40 @@ index e7d1024..4b15008 100644
          gen_const(JV_OBJECT(
              jv_string("optional"), jv_true(),
              jv_string("search"), jv_string(home))));
+diff --git a/src/parser.y b/src/parser.y
+index 3d24689..2901cab 100644
+--- a/src/parser.y
++++ b/src/parser.y
+@@ -504,26 +504,16 @@ ImportWhat Exp ';' {
+ 
+ ImportWhat:
+ "import" ImportFrom "as" BINDING {
+-  jv v = block_const($2);
+-  // XXX Make gen_import take only blocks and the int is_data so we
+-  // don't have to free so much stuff here
+-  $$ = gen_import(jv_string_value(v), jv_string_value($4), 1);
++  $$ = gen_import(block_const($2), $4, 1);
+   block_free($2);
+-  jv_free($4);
+-  jv_free(v);
+ } |
+ "import" ImportFrom "as" IDENT {
+-  jv v = block_const($2);
+-  $$ = gen_import(jv_string_value(v), jv_string_value($4), 0);
++  $$ = gen_import(block_const($2), $4, 0);
+   block_free($2);
+-  jv_free($4);
+-  jv_free(v);
+ } |
+ "include" ImportFrom {
+-  jv v = block_const($2);
+-  $$ = gen_import(jv_string_value(v), NULL, 0);
++  $$ = gen_import(block_const($2), jv_invalid(), 0);
+   block_free($2);
+-  jv_free(v);
+ }
+ 
+ ImportFrom:
 diff --git a/src/parser.c b/src/parser.c
 index 0599db7..c50f2fb 100644
 --- a/src/parser.c
@@ -141,40 +178,6 @@ index 0599db7..c50f2fb 100644
  }
  #line 3116 "src/parser.c"
      break;
-diff --git a/src/parser.y b/src/parser.y
-index 3d24689..2901cab 100644
---- a/src/parser.y
-+++ b/src/parser.y
-@@ -504,26 +504,16 @@ ImportWhat Exp ';' {
- 
- ImportWhat:
- "import" ImportFrom "as" BINDING {
--  jv v = block_const($2);
--  // XXX Make gen_import take only blocks and the int is_data so we
--  // don't have to free so much stuff here
--  $$ = gen_import(jv_string_value(v), jv_string_value($4), 1);
-+  $$ = gen_import(block_const($2), $4, 1);
-   block_free($2);
--  jv_free($4);
--  jv_free(v);
- } |
- "import" ImportFrom "as" IDENT {
--  jv v = block_const($2);
--  $$ = gen_import(jv_string_value(v), jv_string_value($4), 0);
-+  $$ = gen_import(block_const($2), $4, 0);
-   block_free($2);
--  jv_free($4);
--  jv_free(v);
- } |
- "include" ImportFrom {
--  jv v = block_const($2);
--  $$ = gen_import(jv_string_value(v), NULL, 0);
-+  $$ = gen_import(block_const($2), jv_invalid(), 0);
-   block_free($2);
--  jv_free(v);
- }
- 
- ImportFrom:
 diff --git a/tests/shtest b/tests/shtest
 index 505d45d..4a5978c 100755
 --- a/tests/shtest
