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>