mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
greybus: manifest: check for duplicate CPort descriptors when parsing
Now that connection creation has been separated from interface initialisation, we should explicitly check for duplicate CPort descriptors when parsing the manifest. Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Johan Hovold <johan@hovoldconsulting.com> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
parent
98fdf5a037
commit
d6fba3dbb0
@ -230,8 +230,7 @@ static u32 gb_manifest_parse_cports(struct gb_bundle *bundle)
|
||||
{
|
||||
struct gb_interface *intf = bundle->intf;
|
||||
struct greybus_descriptor_cport *desc_cport;
|
||||
struct manifest_desc *desc;
|
||||
struct manifest_desc *next;
|
||||
struct manifest_desc *desc, *next, *tmp;
|
||||
LIST_HEAD(list);
|
||||
u8 bundle_id = bundle->id;
|
||||
u16 cport_id;
|
||||
@ -251,7 +250,19 @@ static u32 gb_manifest_parse_cports(struct gb_bundle *bundle)
|
||||
if (cport_id > CPORT_ID_MAX)
|
||||
goto exit;
|
||||
|
||||
/* Found one, move it to our temporary list. */
|
||||
/*
|
||||
* Found one, move it to our temporary list after checking for
|
||||
* duplicates.
|
||||
*/
|
||||
list_for_each_entry(tmp, &list, links) {
|
||||
desc_cport = tmp->data;
|
||||
if (cport_id == desc_cport->id) {
|
||||
dev_err(&bundle->dev,
|
||||
"duplicate CPort %u found\n",
|
||||
cport_id);
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
list_move(&desc->links, &list);
|
||||
count++;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user