On Mon, Jan 23, 2017 at 11:25:56AM +0000, David Laight wrote:
> From: Xin Long
> > Sent: 19 January 2017 17:19
> > This patch is to implement Sender-Side Procedures for the Add
> > Outgoing and Incoming Streams Request Parameter described in
> > rfc6525 section 5.1.5-5.1.6.
> > 
> > It is also to add sockopt SCTP_ADD_STREAMS in rfc6525 section
> > 6.3.4 for users.
> ...
> > +   out = params->sas_outstrms;
> > +   in  = params->sas_instrms;
> > +
> > +   if (!out && !in)
> > +           goto out;
> > +
> > +   if (out) {
> > +           __u16 nums = stream->outcnt + out;
> 
> Make nums 'unsigned int', the code will be smaller and you can
> use the value for the overflow check.
> 
> > +           /* Check for overflow, can't use nums here */
> > +           if (stream->outcnt + out > SCTP_MAX_STREAM)
> > +                   goto out;
> > +
> > +           /* Use ksize to check if stream array really needs to realloc */
> > +           if (ksize(stream->out) / sizeof(*stream->out) < nums) {
> > +                   struct sctp_stream_out *streamout;
> > +
> > +                   streamout = kcalloc(nums, sizeof(*streamout),
> > +                                       GFP_KERNEL);
> > +                   if (!streamout) {
> > +                           retval = -ENOMEM;
> > +                           goto out;
> > +                   }
> > +
> > +                   memcpy(streamout, stream->out,
> > +                          sizeof(*streamout) * stream->outcnt);
> > +
> > +                   kfree(stream->out);
> > +                   stream->out = streamout;
> > +           }
> 
> Does kcalloc() zero the entire area, or just the length you ask for?
> If the latter you need to zero the rest here.
Better still, just use krealloc.  You still need to zero out any space beyond
the old length, but it will make the code shorter, and avoid the need for
additional temporary variables.

Neil

> ...
> 
>       David
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-sctp" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

Reply via email to