[dm-devel] [PATCH] mpathpersistent: segment faulty occured in mpath_persistent_reserve_in()
Christophe Varoqui
christophe.varoqui at opensvc.com
Fri Nov 4 16:35:54 UTC 2016
Tang,
would you rebase this patch over upstream master please ?
Bart's commit 6e89fd1ec49da86555558acd63f05a4b4152a5c8 already moved the
conf pointer declaration.
Thanks,
Christophe.
On Fri, Nov 4, 2016 at 5:23 PM, Benjamin Marzinski <bmarzins at redhat.com>
wrote:
> On Thu, Oct 27, 2016 at 04:55:28PM +0800, tang.wenji at zte.com.cn wrote:
>
> ACK
>
> -Ben
>
> > From: 10111224 <tang.wenji at zte.com.cn>
> >
> > Segment faulty occured when executing "mpathpersist -i -k
> > /dev/mapper/mpath1" command.The reason is that an uninitialized global
> variable conf is used in mpath_persistent_reserve_in(). The same problem
> also exists in
> > mpath_persistent_reserve_out().
> >
> > Signed-off-by: tang.wenji <tang.wenji at zte.com.cn>
> > ---
> > libmpathpersist/mpath_persist.c | 21 +++++++++++++++++++--
> > libmpathpersist/mpathpr.h | 4 ----
> > 2 files changed, 19 insertions(+), 6 deletions(-)
> >
> > diff --git a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_
> persist.c
> > index 7501651..582d4ef 100644
> > --- a/libmpathpersist/mpath_persist.c
> > +++ b/libmpathpersist/mpath_persist.c
> > @@ -78,6 +78,7 @@ updatepaths (struct multipath * mpp)
> > int i, j;
> > struct pathgroup * pgp;
> > struct path * pp;
> > + struct config *conf;
> >
> > if (!mpp->pg)
> > return 0;
> > @@ -97,16 +98,24 @@ updatepaths (struct multipath * mpp)
> > continue;
> > }
> > pp->mpp = mpp;
> > + conf = get_multipath_config();
> > pathinfo(pp, conf, DI_ALL);
> > + put_multipath_config(conf);
> > continue;
> > }
> > pp->mpp = mpp;
> > if (pp->state == PATH_UNCHECKED ||
> > - pp->state == PATH_WILD)
> > + pp->state == PATH_WILD){
> > + conf = get_multipath_config();
> > pathinfo(pp, conf, DI_CHECKER);
> > + put_multipath_config(conf);
> > + }
> >
> > - if (pp->priority == PRIO_UNDEF)
> > + if (pp->priority == PRIO_UNDEF){
> > + conf = get_multipath_config();
> > pathinfo(pp, conf, DI_PRIO);
> > + put_multipath_config(conf);
> > + }
> > }
> > }
> > return 0;
> > @@ -159,8 +168,11 @@ int mpath_persistent_reserve_in (int fd, int
> rq_servact,
> > int map_present;
> > int major, minor;
> > int ret;
> > + struct config *conf;
> >
> > + conf = get_multipath_config();
> > conf->verbosity = verbose;
> > + put_multipath_config( conf);
> >
> > if (fstat( fd, &info) != 0){
> > condlog(0, "stat error %d", fd);
> > @@ -252,8 +264,11 @@ int mpath_persistent_reserve_out ( int fd, int
> rq_servact, int rq_scope,
> > int j;
> > unsigned char *keyp;
> > uint64_t prkey;
> > + struct config *conf;
> >
> > + conf = get_multipath_config();
> > conf->verbosity = verbose;
> > + put_multipath_config(conf);
> >
> > if (fstat( fd, &info) != 0){
> > condlog(0, "stat error fd=%d", fd);
> > @@ -320,7 +335,9 @@ int mpath_persistent_reserve_out ( int fd, int
> rq_servact, int rq_scope,
> > goto out1;
> > }
> >
> > + conf = get_multipath_config();
> > select_reservation_key(conf, mpp);
> > + put_multipath_config(conf);
> >
> > switch(rq_servact)
> > {
> > diff --git a/libmpathpersist/mpathpr.h b/libmpathpersist/mpathpr.h
> > index cd58201..e6c2ded 100644
> > --- a/libmpathpersist/mpathpr.h
> > +++ b/libmpathpersist/mpathpr.h
> > @@ -25,10 +25,6 @@ struct threadinfo {
> > struct prout_param param;
> > };
> >
> > -
> > -struct config * conf;
> > -
> > -
> > int prin_do_scsi_ioctl(char * dev, int rq_servact, struct prin_resp *
> resp, int noisy);
> > int prout_do_scsi_ioctl( char * dev, int rq_servact, int rq_scope,
> > unsigned int rq_type, struct prout_param_descriptor
> *paramp, int noisy);
> > --
> > 2.8.1.windows.1
> >
> > --
> > dm-devel mailing list
> > dm-devel at redhat.com
> > https://www.redhat.com/mailman/listinfo/dm-devel
>
> --
> dm-devel mailing list
> dm-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/dm-devel/attachments/20161104/f4bc1671/attachment.htm>
More information about the dm-devel
mailing list