[lxc-devel] [PATCH lxcfs 4/5] cgfs: fix dorealloc's batch allocation
Mathias Gibbens
mathias at calenhad.com
Fri Jan 8 21:03:03 UTC 2016
This patch also seems to fix a segfault I encountered today after
upgrading to lxcfs-0.15. My host is Debian jessie 64bit running
unprivileged jessie containers with systemd as their init. lxcfs-0.13
works, lxcfs-0.15 segfaults, and lxcfs-git at 1204f57 works again.
In the short time since lxcfs-0.15 is out, can anyone else confirm
this?
Mathias
On Fri, 2016-01-08 at 20:10 +0000, Serge Hallyn wrote:
> > From 24e98d74ca279ed2dc8e5a025add5a00737ba952 Mon Sep 17 00:00:00
> 2001
> > From: Wolfgang Bumiller <w.bumiller at proxmox.com>
> > Date: Fri, 8 Jan 2016 11:09:57 +0100
> > Subject: [PATCH lxcfs] cgfs: make dorealloc allocate the first
> batch, too
> >
> > With a short first line the case can be
> > *mem = NULL
> > oldlen = 0
> > newlen = 5 (anything < 50)
> > making newbatches == oldbatches == 1 causing the
> > (newbatches <= oldbatches)
> > condition to be true.
> >
> > Let realloc() handle *mem==NULL and use
> > (!*mem || newbatches > oldbatches) as the only condition.
> >
> > Signed-off-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
>
> Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
>
> Looks good to me, thanks.
>
> > ---
> > cgfs.c | 9 +--------
> > lxcfs.c | 2 +-
> > 2 files changed, 2 insertions(+), 9 deletions(-)
> >
> > diff --git a/cgfs.c b/cgfs.c
> > index 1f31ed1..e6330e3 100644
> > --- a/cgfs.c
> > +++ b/cgfs.c
> > @@ -77,14 +77,7 @@ static void dorealloc(char **mem, size_t oldlen,
> size_t
> > newlen)
> > int newbatches = (newlen / BATCH_SIZE) + 1;
> > int oldbatches = (oldlen / BATCH_SIZE) + 1;
> >
> > - if (newbatches <= oldbatches)
> > - return;
> > -
> > - if (!*mem) {
> > - do {
> > - *mem = malloc(newbatches * BATCH_SIZE);
> > - } while (!*mem);
> > - } else {
> > + if (!*mem || newbatches > oldbatches) {
> > char *tmp;
> > do {
> > tmp = realloc(*mem, newbatches * BATCH_SIZE);
> > --
> > 2.1.4
> >
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20160108/86e7cd9e/attachment.sig>
More information about the lxc-devel
mailing list