Skip to content

Commit

Permalink
Fix invalid read caused by d2a1a96.
Browse files Browse the repository at this point in the history
Fixes bad casting caused by Tim on review.

Make one definitive copy of sort_part_tier() in partition_msg.c and use it.

Bug 3844, 5552.
  • Loading branch information
dannyauble authored and wickberg committed Aug 10, 2018
1 parent f23411b commit 21d2ab6
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 28 deletions.
1 change: 1 addition & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ documents those changes that are of interest to users and administrators.
* Changes in Slurm 17.11.10
===========================
-- Fix printing of node state "drain + reboot" (and other node state flags).
-- Fix invalid read (segfault) when sorting multi-partition jobs.

* Changes in Slurm 17.11.9
==========================
Expand Down
15 changes: 1 addition & 14 deletions src/plugins/priority/multifactor/priority_multifactor.c
Original file line number Diff line number Diff line change
Expand Up @@ -489,19 +489,6 @@ static double _get_fairshare_priority(struct job_record *job_ptr)
return priority_fs;
}

static int _sort_part_tier(void *x, void *y)
{
struct part_record *parta = (struct part_record *) x;
struct part_record *partb = (struct part_record *) y;

if (parta->priority_tier > partb->priority_tier)
return -1;
if (parta->priority_tier < partb->priority_tier)
return 1;

return 0;
}

/* Returns the priority after applying the weight factors */
static uint32_t _get_priority_internal(time_t start_time,
struct job_record *job_ptr)
Expand Down Expand Up @@ -598,7 +585,7 @@ static uint32_t _get_priority_internal(time_t start_time,
}

i = 0;
list_sort(job_ptr->part_ptr_list, _sort_part_tier);
list_sort(job_ptr->part_ptr_list, sort_part_tier);
part_iterator = list_iterator_create(job_ptr->part_ptr_list);
while ((part_ptr = (struct part_record *)
list_next(part_iterator))) {
Expand Down
15 changes: 1 addition & 14 deletions src/slurmctld/job_mgr.c
Original file line number Diff line number Diff line change
Expand Up @@ -4573,19 +4573,6 @@ static void _create_job_array(struct job_record *job_ptr,
}
}

static int _sort_part_tier(void *x, void *y)
{
struct part_record *parta = *(struct part_record **) x;
struct part_record *partb = *(struct part_record **) y;

if (parta->priority_tier > partb->priority_tier)
return -1;
if (parta->priority_tier < partb->priority_tier)
return 1;

return 0;
}

/*
* Wrapper for select_nodes() function that will test all valid partitions
* for a new job
Expand All @@ -4606,7 +4593,7 @@ static int _select_nodes_parts(struct job_record *job_ptr, bool test_only,
int best_rc = -1, part_limits_rc = WAIT_NO_REASON;

if (job_ptr->part_ptr_list) {
list_sort(job_ptr->part_ptr_list, _sort_part_tier);
list_sort(job_ptr->part_ptr_list, sort_part_tier);
iter = list_iterator_create(job_ptr->part_ptr_list);
while ((part_ptr = list_next(iter))) {
job_ptr->part_ptr = part_ptr;
Expand Down
13 changes: 13 additions & 0 deletions src/slurmctld/partition_mgr.c
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,19 @@ extern void set_partition_tres()
list_for_each(part_list, _calc_part_tres, NULL);
}

extern int sort_part_tier(void *x, void *y)
{
struct part_record *parta = *(struct part_record **) x;
struct part_record *partb = *(struct part_record **) y;

if (parta->priority_tier > partb->priority_tier)
return -1;
if (parta->priority_tier < partb->priority_tier)
return 1;

return 0;
}

/*
* build_part_bitmap - update the total_cpus, total_nodes, and node_bitmap
* for the specified partition, also reset the partition pointers in
Expand Down
5 changes: 5 additions & 0 deletions src/slurmctld/slurmctld.h
Original file line number Diff line number Diff line change
Expand Up @@ -2530,6 +2530,11 @@ waitpid_timeout(const char *, pid_t, int *, int);
*/
extern void set_partition_tres();

/*
* Sort partitions on Priority Tier.
*/
extern int sort_part_tier(void *x, void *y);

/*
* Update job's federated siblings strings.
*
Expand Down

0 comments on commit 21d2ab6

Please sign in to comment.