On Mon, Aug 5, 2013 at 10:07 AM, Dmitry Bazhenov <at...@emcraft.com> wrote: > Hello, Zdenek, > > Is there any progress on this ticket. Or there are obstacle for proceeding > with it? >
Dmitry, there is no progress on my side as I had to put ipmitool on back-burner right now. As for obstacles, if you've addressed my comments, then I don't know of any other obstacles - I assume I'd not have any more comments. I'll try to give your updated patch at least a look. If I see something, I'll most likely scream. However, I mean to log ticket for those malloc() calls in those ``just dumping text'' functions. But as I said previously, that's not your problem. Regards, Z. > Regards, > Dmitry > > 29.07.2013 12:24, Dmitry Bazhenov пишет: > >> Hello, Zdenek, >> >> I addressed the comment about malloc() failures in the build_fru_bloc() >> function. Now it aborts the operation on any failure. >> >> I didn't address the other malloc() failures since the spoken functions >> are just dump the text. >> >> Regards, >> Dmitry >> >> 15.07.2013 15:57, Zdenek Styblik пишет: >>> >>> On Mon, Jul 15, 2013 at 10:50 AM, Dmitry Bazhenov >>> <dim...@pigeonpoint.com> wrote: >>>> >>>> Hello, Zdenek, >>>> >>>> Thanks for review. >>>> I see your point and I think it make sense. I am going to address your >>>> comments regarding the build_fru_bloc() function since this one was >>>> under my >>>> heavy changes. >>> >>> >>> Ok, great. >>> >>>> I will also look at the other functions >>>> (fru_area_print_chassis(), fru_area_print_board(), >>>> fru_area_print_product(), fru_area_print_multirec()), but I think >>>> they are >>>> of different case since they are just dumping functions. And in my >>>> opinion >>>> it is not of big deal to skip through some memory allocation failures. >>> >>> >>> *shrug* I somewhat knew it's coming, but I've failed to address it. >>> Yes, they are just dumping/printing data, but they're not much of >>> different than any other function. It may not matter in this >>> case/context, but it could matter in different one ...: >>> >>> ~~~ >>> [ some code here ] >>> fru_area_print_chassis() >>> [ some more code here ] >>> ~~~ >>> >>> Actually, these 4 functions in question are called in consecutive order. >>> >>> Hm, how about this. I'll log tickets for those and it'll get >>> fixed(meaning I'll fix it) later. Now I hate myself for writing, even >>> thinking of, such thing. >>> The basic idea I have is to return int and check it. No biggie. >>> >>> Z. >>> >>>> However, if it leads to dereference of NULL, then it is important to add >>>> some safety checks there. >>>> >>>> Will such a plan work for you? >>>> >>>> Regards, >>>> Dmitry >>>> >>>> 15.07.2013 14:01, Zdenek Styblik пишет: >>>> >>>>> On Thu, Jul 4, 2013 at 9:39 AM, Zdenek Styblik >>>>> <zdenek.styb...@gmail.com> >>>>> wrote: >>>>>> >>>>>> >>>>>> On Tue, Jul 2, 2013 at 10:41 AM, Dmitry Bazhenov >>>>>> <dim...@pigeonpoint.com> >>>>>> wrote: >>>>>>> >>>>>>> >>>>>>> Hello, Zdenek, >>>>>>> >>>>>>> The FRU information sections are hardly a subject for change in >>>>>>> the near >>>>>>> future. So, I guess we can skip this issue. >>>>>>> >>>>>>> I updated the formatting of the patch according to your comments and >>>>>>> removed >>>>>>> the restricted FRU info access entirely since the implemented >>>>>>> algorithm >>>>>>> reduces the read/write size while it is not accepted. >>>>>>> >>>>>>> Please, review. >>>>>>> >>>>>>> Regards, >>>>>>> Dmitry >>>>>>> >>>>> [...] >>>>> >>>>> Dmitry, >>>>> >>>>> I've given it another look. I've added space here and there and >>>>> changed C++ style comments to C style comments. I know you've followed >>>>> style in 'lib/ipmi_fru.c', however I think error messages regarding >>>>> malloc() failure should be follow the suit of the rest of the code in >>>>> ipmitool. Again, easy to fix and somewhat minor. Hell, I'll file new >>>>> ticket for it and it will be done later. >>>>> >>>>> I have the following concerns, though. In function build_fru_bloc(), >>>>> if malloc() failure occurs, you just break from the loop and that's >>>>> about it. I think this is wrong. If malloc() failure occurs, then you >>>>> either should return from the function immediately, or set variable >>>>> eg. ``error = 1; break;'' and check value of such variable once you >>>>> exit the loop. >>>>> >>>>> Example: >>>>> ~~~ >>>>> for (i = 0; i < 4; i++) { >>>>> p_new = malloc(...); >>>>> if (p_new == NULL) { >>>>> lprintf(LOG_ERR, "out of memory"); >>>>> break; >>>>> } >>>>> } >>>>> /* nothing to see, nothing just happened, moving on */ >>>>> [ more code, more malloc() calls etc. ] >>>>> ~~~ >>>>> >>>>> Seems just simply wrong. Application shouldn't continue, in my >>>>> opinion, and should terminate. No such thing happens, however, and >>>>> function proceeds over malloc() failures like nothing is going on. >>>>> >>>>> fru_area_print_chassis(), fru_area_print_board(), >>>>> fru_area_print_product(), fru_area_print_multirec() - similar case. >>>>> This function returns void. malloc() failure happens and all we do is >>>>> just return from the function? Eh. It just doesn't feel right to me. >>>>> >>>>> Now, I stress it's my opinion application should terminate after >>>>> malloc() failure occurs even once. The reason behind this worry is >>>>> malloc() failure may occur at given time, t_0, but it doesn't have to >>>>> occur later in t_1. Now, there is a bit of inconsistency and perhaps >>>>> some NULL pointer, isn't there? Also, more malloc() calls are stacked >>>>> up and we've been told once we won't get any memory, so why should we >>>>> try again and again? OS can be under heavy load, running short on >>>>> resources, yet we'll keep bugging about memory or what not? >>>>> However, I'm open to be explained why this isn't necessary or >>>>> eventually wrong approach in general. And ok, I can imagine cases why >>>>> this is done deliberately, but is it here? Why? >>>>> >>>>> I even offer to put some code behind my words as talk is cheap. I >>>>> mean, I'm ok do to changes I've just pointed out and send a patch for >>>>> review. If there is no rush as I can't do it right now. >>>>> One more thing. If this e-mail feels offensive in any way, it's not >>>>> meant to be. So please, take it easy. >>>>> >>>>> Have an easy Monday, >>>>> Z. >>>>> >>>>>>> 28.06.2013 18:51, Zdenek Styblik пишет: >>>>>>> >>>>>>>> On Thu, Jun 27, 2013 at 6:06 PM, Dmitry Bazhenov >>>>>>>> <dim...@pigeonpoint.com> >>>>>>>> wrote: >>>>>>>> [...] >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> 1] ``const char *section_id[4]'' - is there no chance at all >>>>>>>>>> this is >>>>>>>>>> going to be extended at some point in future? If it is, I'd be for >>>>>>>>>> better solution. My point is ``for (i = 0; i < 4; i++)'' and if it >>>>>>>>>> gets extended so must code which follows/is using/iterate over it. >>>>>>>>>> But >>>>>>>>>> may be I'm wrong. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Is 'for ( i = 0; i < sizeof(section_id) / siceof(section_id[0]); >>>>>>>>> i++)' >>>>>>>>> solves the issue? >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Dmitry, >>>>>>>> >>>>>>>> I'm not sure if there was an issue to begin with. But to be honest, >>>>>>>> this one looks scary. Please, let me think about it a bit, try >>>>>>>> something; I'll try to come up with some constructive(= better?). >>>>>>>> If I >>>>>>>> can't think of anything better, I guess, I shouldn't ask you to. I >>>>>>>> mean, I don't know. I'll think about it, try stuff, we'll see, >>>>>>>> ok? :) >>>>>>>> >>>>>>>> Have a nice weekend, >>>>>>>> Z. >>>>>>>> >>>>>>> >>>> > ------------------------------------------------------------------------------ Get 100% visibility into Java/.NET code with AppDynamics Lite! It's a free troubleshooting tool designed for production. Get down to code-level detail for bottlenecks, with <2% overhead. Download for free and get started troubleshooting in minutes. http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk _______________________________________________ Ipmitool-devel mailing list Ipmitool-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ipmitool-devel