Re: [PATCH V2] ovl: Fix dereferencing possible ERR_PTR()

From: Miklos Szeredi
Date: Thu Sep 12 2019 - 05:28:54 EST


On Thu, Sep 12, 2019 at 8:02 AM Amir Goldstein <amir73il@xxxxxxxxx> wrote:
>
> On Thu, Sep 12, 2019 at 8:24 AM Ding Xiang
> <dingxiang@xxxxxxxxxxxxxxxxxxxx> wrote:
> >
> > if ovl_encode_real_fh() fails, no memory was allocated
> > and the error in the error-valued pointer should be returned.
> >
> > V1->V2: fix SHA1 length problem
> >
> > Fixes: 9b6faee07470 ("ovl: check ERR_PTR() return value from ovl_encode_fh()")
> > Signed-off-by: Ding Xiang <dingxiang@xxxxxxxxxxxxxxxxxxxx>
> > ---
> > fs/overlayfs/export.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/fs/overlayfs/export.c b/fs/overlayfs/export.c
> > index cb8ec1f..50ade19 100644
> > --- a/fs/overlayfs/export.c
> > +++ b/fs/overlayfs/export.c
> > @@ -229,7 +229,7 @@ static int ovl_d_to_fh(struct dentry *dentry, char *buf, int buflen)
> > ovl_dentry_upper(dentry), !enc_lower);
> > err = PTR_ERR(fh);
> > if (IS_ERR(fh))
> > - goto fail;
> > + return err;
> >
>
> Please fix the code in warning message instead of skipping the warning.

Not sure that makes sense. ovl_encode_real_fh() will either return
-EIO in case of an internal error with WARN_ON() or it will return
-ENOMEM on memory allocation failure, which doesn't warrant a debug
message.

Thanks,
Miklos