Hi!

On Sun, Sep 30, 2007 at 01:22:56PM +0100, martin f. krafft wrote:
> Commit a40b4fe introduced a temporary supertype variable tst, instead of
> manipulating st directly. However, it was forgotton to pass &tst into the
> recursive load_super1 call, causing an infinite recursion.
> 
> Signed-off-by: martin f. krafft <[EMAIL PROTECTED]>
> ---
>  super1.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/super1.c b/super1.c
> index 52783e7..06c2655 100644
> --- a/super1.c
> +++ b/super1.c
> @@ -1001,7 +1001,7 @@ static int load_super1(struct supertype *st, int fd, 
> void **sbp, char *devname)
>               /* guess... choose latest ctime */
>               tst.ss = &super1;
>               for (tst.minor_version = 0; tst.minor_version <= 2 ; 
> tst.minor_version++) {
> -                     switch(load_super1(st, fd, sbp, devname)) {
> +                     switch(load_super1(&tst, fd, sbp, devname)) {
>                       case 0: super = *sbp;
>                               if (bestvers == -1 ||
>                                   bestctime < __le64_to_cpu(super->ctime)) {

I have independently tried to understand why the installer was not able
to create RAID devices anymore.  After digging the source code, I think
you have missing half of the fix:

--- mdadm-2.6.3+200709292116+4450e59.orig/super1.c
+++ mdadm-2.6.3+200709292116+4450e59/super1.c
@@ -1020,7 +1020,7 @@
                        tst.minor_version = bestvers;
                        tst.ss = &super1;
                        tst.max_devs = 384;
-                       rv = load_super1(st, fd, sbp, devname);
+                       rv = load_super1(&tst, fd, sbp, devname);
                        if (rv == 0)
                                *st = tst;
                        return rv;

As far as I can read, it will loop indefinetely as well, in in this
second call without the former change.

Anyway, thanks for promptly figuring out this issue. :)

Cheers,
-- 
Jérémy Bobbio                        .''`. 
[EMAIL PROTECTED]                    : :Ⓐ  :  # apt-get install anarchism
                                    `. `'` 
                                      `-   

Attachment: signature.asc
Description: Digital signature

Reply via email to