On 22 March 2018 03:53, Guenter Roeck wrote: > > +static void tcpm_pd_ext_msg_request(struct tcpm_port *port, > > + const struct pd_message *msg) > > +{ > > + enum pd_ext_msg_type type = pd_header_type_le(msg->header); > > + unsigned int data_size = pd_ext_header_data_size_le(msg- > >ext_msg.header); > > + u8 *data; > > + > > + if (!(msg->ext_msg.header && PD_EXT_HDR_CHUNKED)) { > > + tcpm_log(port, "Unchunked extended messages unsupported"); > > + return; > > + } > > + > > + if (data_size > (PD_EXT_MAX_CHUNK_DATA)) { > > + tcpm_log(port, "Chunk handling not yet supported"); > > + return; > > + } > > + > > + data = kzalloc(data_size, GFP_KERNEL); > > + if (!data) { > > + tcpm_log(port, "Failed to allocate memory for ext msg data"); > > + return; > > + } > > + memcpy(data, msg->ext_msg.data, data_size); > > + > > + switch (type) { > > + case PD_EXT_STATUS: > > + /* > > + * If PPS related events raised then get PPS status to clear > > + * (see USB PD 3.0 Spec, 6.5.2.4) > > + */ > > + if (data[USB_PD_EXT_SDB_EVENT_FLAGS] & > USB_PD_EXT_SDB_PPS_EVENTS) > > This seems to be the only use of 'data'. Can you explain why it is needed > in the first place ? Am I missing something ? Actually it's a fair point. Right now it's not needed so will remove it and directly reference the ext_msg.data array. ��.n��������+%������w��{.n�����{���)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥