| From 14f110f0286d38e29ef5e51d7f72e049c2f18323 Mon Sep 17 00:00:00 2001 |
| From: Logan Gunthorpe <logang@deltatee.com> |
| Date: Wed, 22 Jun 2022 14:25:08 -0600 |
| Subject: [PATCH 2/4] DDF: Fix NULL pointer dereference in |
| validate_geometry_ddf() |
| |
| A relatively recent patch added a call to validate_geometry() in |
| Manage_add() that has level=LEVEL_CONTAINER and chunk=NULL. |
| |
| This causes some ddf tests to segfault which aborts the test suite. |
| |
| To fix this, avoid dereferencing chunk when the level is |
| LEVEL_CONTAINER or LEVEL_NONE. |
| |
| Fixes: 1f5d54a06df0 ("Manage: Call validate_geometry when adding drive to external container") |
| Signed-off-by: Logan Gunthorpe <logang@deltatee.com> |
| Acked-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> |
| Signed-off-by: Jes Sorensen <jes@trained-monkey.org> |
| |
| Upstream-Status: Backport |
| |
| Reference to upstream patch: |
| https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=2b93288a5650 |
| |
| Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> |
| --- |
| super-ddf.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| diff --git a/super-ddf.c b/super-ddf.c |
| index 65cf727..3ef1293 100644 |
| --- a/super-ddf.c |
| +++ b/super-ddf.c |
| @@ -3369,9 +3369,6 @@ static int validate_geometry_ddf(struct supertype *st, |
| * If given BVDs, we make an SVD, changing all the GUIDs in the process. |
| */ |
| |
| - if (*chunk == UnSet) |
| - *chunk = DEFAULT_CHUNK; |
| - |
| if (level == LEVEL_NONE) |
| level = LEVEL_CONTAINER; |
| if (level == LEVEL_CONTAINER) { |
| @@ -3381,6 +3378,9 @@ static int validate_geometry_ddf(struct supertype *st, |
| freesize, verbose); |
| } |
| |
| + if (*chunk == UnSet) |
| + *chunk = DEFAULT_CHUNK; |
| + |
| if (!dev) { |
| mdu_array_info_t array = { |
| .level = level, |
| -- |
| 2.39.1 |
| |