On Fri, Feb 01, 2019 at 04:30:12PM +0000, Will Deacon wrote: > On Thu, Jan 17, 2019 at 01:40:14PM +0100, Anisse Astier wrote: > > GCC 8.2 gives this warning: > > > > virtio/9p.c: In function ‘virtio_p9_create’: > > virtio/9p.c:335:21: error: passing argument 1 to restrict-qualified parameter aliases with argument 4 [-Werror=restrict] > > ret = snprintf(dfid->path, size, "%s/%s", dfid->path, name); > > ~~~~^~~~~~ ~~~~~~~~~~ > > > > Fix it by allocating a temporary string with dfid->path content instead > > of overwriting it in-place, which is limited in glibc snprintf with the > > __restrict qualifier. > > > > Signed-off-by: Anisse Astier <aastier@xxxxxxxxxx> > > --- > > virtio/9p.c | 9 ++++++++- > > 1 file changed, 8 insertions(+), 1 deletion(-) > > > > diff --git a/virtio/9p.c b/virtio/9p.c > > index 69fdc4b..6ae1999 100644 > > --- a/virtio/9p.c > > +++ b/virtio/9p.c > > @@ -322,6 +322,7 @@ static void virtio_p9_create(struct p9_dev *p9dev, > > struct p9_qid qid; > > struct p9_fid *dfid; > > char full_path[PATH_MAX]; > > + char *tmp_path; > > u32 dfid_val, flags, mode, gid; > > > > virtio_p9_pdu_readf(pdu, "dsddd", &dfid_val, > > @@ -332,7 +333,13 @@ static void virtio_p9_create(struct p9_dev *p9dev, > > goto err_out; > > > > size = sizeof(dfid->abs_path) - (dfid->path - dfid->abs_path); > > - ret = snprintf(dfid->path, size, "%s/%s", dfid->path, name); > > + tmp_path = strdup(dfid->path); > > + if (!tmp_path) { > > + errno = ENOMEM; > > Won't errno already be set by the failing strdup? > > Will Indeed, I didn't know it would. I'll send an updated version. Thanks, Anisse