Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Apr 2014 11:53:29 +0900 (JST)
From:      Kohji Okuno <okuno.kohji@jp.panasonic.com>
To:        freebsd-current@freebsd.org
Subject:   UFS SU+J bug? (Re: uninitialized journal data written in SU+J ?)
Message-ID:  <20140423.115329.1728349046094315079.okuno.kohji@jp.panasonic.com>
In-Reply-To: <C1CF5DFB8355ACtakehara.mikihito@jp.panasonic.com>
References:  <C1CF5DFB8355ACtakehara.mikihito@jp.panasonic.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

If you use UFS SU+J, could you check your `.sujournal'?
(For example: strings .sujournal)
You will find memory that already has been released.

In addition, unfotunately, if the memory was used for journal is
re-used, although the journal is incorrect, fsck will missunderstand it.

What do you think about this?

Regards,
 Kohji Okuno

From: takehara.mikihito@jp.panasonic.com
Subject: uninitialized journal data written in SU+J ?
Date: Tue, 22 Apr 2014 16:21:43 +0900
> Hello,
> 
> 
> I'm testing UFS with SU+J. But it seems sometimes broken journal data has written.
> 
> In softdep_process_journal (ffs_softdep.c), there is a while code to build jsegrec and each entry.
> But by my test, sometimes there is no entry then break this while code without building jsegrec.
> If this happens, bp->b_data is not initialized but this bp is written, I think.
> 
> I checked this behavior by following patch.
> ============================================================================================
> diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
> index 585af50..2d4939c 100644
> --- a/sys/ufs/ffs/ffs_softdep.c
> +++ b/sys/ufs/ffs/ffs_softdep.c
> @@ -3421,6 +3421,15 @@ softdep_process_journal(mp, needwk, flags)
>                         data = bp->b_data + off;
>                         cnt--;
>                 }
> +
> +#if 1
> +               if (off == 0) {
> +                       struct jsegrec *tmp = (struct jsegrec*)bp->b_data;
> +                       if (tmp->jsr_seq != jseg->js_seq) {
> +                               panic("test test");
> +                       }
> +               }
> +#endif
>                 /*
>                  * Write this one buffer and continue.
>                  */
> ============================================================================================
> 
> If uninitialized data is "valid" by fsck suj, this may result filesystem corruption, I think.
> I think it's better to clear b_data before using it.
> 
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140423.115329.1728349046094315079.okuno.kohji>