@@ -728,6 +728,23 @@ static int find_special_sections(struct payload *payload,
if ( xen_build_id_check(&payload->id.p, &payload->id.len, n) )
return -EINVAL;
}
+ /* Make sure it is not a duplicate. */
+ if ( payload->id.len )
+ {
+ struct payload *data;
+
+ spin_lock(&payload_lock);
+ list_for_each_entry ( data, &payload_list, list )
+ {
+ if ( data != payload && data->id.len &&
+ !memcmp(data->id.p, payload->id.p, data->id.len) )
+ {
+ spin_unlock(&payload_lock);
+ return -EEXIST;
+ }
+ }
+ spin_unlock(&payload_lock);
+ }
sec = xsplice_elf_sec_by_name(elf, ".xsplice.depends");
{