All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Tinguely <tinguely@sgi.com>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: xfs@oss.sgi.com
Subject: Re: xfs: free the list of recovery items on error
Date: Fri, 06 Dec 2013 10:17:41 -0600	[thread overview]
Message-ID: <52A1F8A5.1000504@sgi.com> (raw)
In-Reply-To: <20131206154906.GA13568@elgon.mountain>

On 12/06/13 09:49, Dan Carpenter wrote:
> Hello Mark Tinguely,
>
> The patch 2a84108fe275: "xfs: free the list of recovery items on
> error" from Oct 2, 2013, leads to the following
> static checker warning: "fs/xfs/xfs_log_recover.c:3621
> xlog_recover_process_data()
> 	 warn: 'trans' was already freed."
>
> fs/xfs/xfs_log_recover.c
>    3589                          switch (flags) {
>    3590                          case XLOG_COMMIT_TRANS:
>    3591                                  error = xlog_recover_commit_trans(log,
>    3592                                                                  trans, pass);
>
> xlog_recover_commit_trans() frees trans on the success path and on some
> failure paths.
>
>    3593                                  break;
>    3594                          case XLOG_UNMOUNT_TRANS:
>    3595                                  error = xlog_recover_unmount_trans(log, trans);
>    3596                                  break;
>    3597                          case XLOG_WAS_CONT_TRANS:
>    3598                                  error = xlog_recover_add_to_cont_trans(log,
>    3599                                                  trans, dp,
>    3600                                                  be32_to_cpu(ohead->oh_len));
>    3601                                  break;
>    3602                          case XLOG_START_TRANS:
>    3603                                  xfs_warn(log->l_mp, "%s: bad transaction",
>    3604                                          __func__);
>    3605                                  ASSERT(0);
>    3606                                  error = XFS_ERROR(EIO);
>    3607                                  break;
>    3608                          case 0:
>    3609                          case XLOG_CONTINUE_TRANS:
>    3610                                  error = xlog_recover_add_to_trans(log, trans,
>    3611                                                  dp, be32_to_cpu(ohead->oh_len));
>    3612                                  break;
>    3613                          default:
>    3614                                  xfs_warn(log->l_mp, "%s: bad flag 0x%x",
>    3615                                          __func__, flags);
>    3616                                  ASSERT(0);
>    3617                                  error = XFS_ERROR(EIO);
>    3618                                  break;
>    3619                          }
>    3620                          if (error) {
>    3621                                  xlog_recover_free_trans(trans);
>
> Double free?
>
>    3622                                  return error;
>    3623                          }
>
> regards,
> dan carpenter


Thanks for the information. Should remove the xlog_recover_free_trans() 
from xlog_recover_commit_trans() and let the error handler in the switch 
remove it.

--Mark.

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

      reply	other threads:[~2013-12-06 16:17 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-06 15:49 xfs: free the list of recovery items on error Dan Carpenter
2013-12-06 16:17 ` Mark Tinguely [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52A1F8A5.1000504@sgi.com \
    --to=tinguely@sgi.com \
    --cc=dan.carpenter@oracle.com \
    --cc=xfs@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.