Re: [PATCH 1/1] cr: uts: don't pass an unsigned var as a signed int

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"Serge E. Hallyn" <serge@xxxxxxxxxx> writes:
> Quoting Nathan Lynch (ntl@xxxxxxxxx):
>> "Serge E. Hallyn" <serge@xxxxxxxxxx> writes:
>> 
>> > Quoting Nathan Lynch (ntl@xxxxxxxxx):
>> >> "Serge E. Hallyn" <serue@xxxxxxxxxx> writes:
>> >> 
>> >> > Else my checkpoing image gets reeeaallly huge.  Just passing the
>> >> > result of sizeof() however does the right thing.
>> >> >
>> >> > Signed-off-by: Serge E. Hallyn <serue@xxxxxxxxxx>
>> >> > ---
>> >> >  checkpoint/namespace.c |   12 ++++++------
>> >> >  1 files changed, 6 insertions(+), 6 deletions(-)
>> >> 
>> >> But right above the code you're changing we have:
>> >> 
>> >> 	h->sysname_len = sizeof(name->sysname);
>> >> 	h->nodename_len = sizeof(name->nodename);
>> >> 	h->release_len = sizeof(name->release);
>> >> 	h->version_len = sizeof(name->version);
>> >> 	h->machine_len = sizeof(name->machine);
>> >> 	h->domainname_len = sizeof(name->domainname);
>> >> 
>> >> Your patch shouldn't change any behavior.  What gives?
>> >
>> > "Shouldn't", perhaps, but does.
>> 
>> 
>> Revisiting do_checkpoint_uts_ns, I think it's a case of use after free:
>> 
>> 	h = ckpt_hdr_get_type(ctx, sizeof(*h), CKPT_HDR_UTS_NS);
>> 	if (!h)
>> 		return -ENOMEM;
>> 
>> 	h->sysname_len = sizeof(name->sysname);
>> 	h->nodename_len = sizeof(name->nodename);
>> 	h->release_len = sizeof(name->release);
>> 	h->version_len = sizeof(name->version);
>> 	h->machine_len = sizeof(name->machine);
>> 	h->domainname_len = sizeof(name->domainname);
>> 
>> 	ret = ckpt_write_obj(ctx, &h->h);
>> 	ckpt_hdr_put(ctx, h);
>> 	if (ret < 0)
>> 		return ret;
>> 
>> 	down_read(&uts_sem);
>> 	ret = ckpt_write_string(ctx, name->sysname, h->sysname_len);
>> 
>> We're continuing to use h's memory after it has been released by
>> ckpt_hdr_put.  Seems plausible that the poison values written by sl*b
>> debug would cause the len argument to be ridiculously large.
>
> Oren,
>
> would it be possible to put up a filter, either manual or
> automatic, to send every patch that gets pushed on the current
> ckpt git branch to the containers list, maybe with a [CKPT PUSH]
> tag in the subject line?

Or just post patches to the mailing list before committing them to
public branches on which others are basing work.

This seems like an opportune moment to point out the guidelines for
including a tree in linux-next:

all patches/commits in the tree/series must have been:

	posted to a relevant mailing list
	reviewed
	unit tested
	destined for the next merge window (or the current release)

*before* they are included.

(source: http://lkml.org/lkml/2009/6/20/6 )

If upstream inclusion is the ultimate goal, those are the standards
which apply.


> I think it will foster much more review of every patch.  Right now
> it feels like we just catch blatant bugs when they bite us too hard,
> but I don't think many people are looking through 'git wc' every
> day.

Right.
_______________________________________________
Containers mailing list
Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/containers

[Index of Archives]     [Cgroups]     [Netdev]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux