Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 May 2009 17:18:26 +0300
From:      Andriy Gapon <avg@freebsd.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-stable@freebsd.org, Chagin Dmitry <dchagin@freebsd.org>
Subject:   Re: stack abuse by linux_ioctl_cdrom
Message-ID:  <4A141132.5010308@freebsd.org>
In-Reply-To: <200905200832.00771.jhb@freebsd.org>
References:  <4A1165A0.6000800@icyb.net.ua> <4A1167A2.6040407@freebsd.org> <4A13F30A.2090401@freebsd.org> <200905200832.00771.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
on 20/05/2009 15:32 John Baldwin said the following:
> On Wednesday 20 May 2009 8:09:46 am Andriy Gapon wrote:
>> This is a patch that I currently use to fix the problem for myself - both 2KB
>> structs are allocated on the heap.
>> I am not sure what is the proper style for chained calls using chained if-else,
>> but I think that the chaining is the best way to organize that piece of code, so
>> that there is only one exit point from case-block to make sure that FREE is always
>> called.
> 
> I usually use goto for that.  Error handling does seem to be one of the few
> appropriate uses of goto.  In this case you would basically be replacing all
> the 'break's with 'goto out' or some such.  Also, please do not use the MALLOC()
> or FREE() macros in new code as they are deprecated (I think they are completely
> removed in 8).

I used MALLOC/FREE only because I saw that this is what was used in that file
before. I will fix this.

I was reluctant to use goto and label within a case block. In my personal taste
that looks uglier and less safe (e.g. accidental goto from another case or from
outside of switch). I would preferred goto if label was outside of switch/case.
But maybe it's my personal prejudice.
I will follow the style that you will recommend.

-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4A141132.5010308>