1. 06 Mar, 2020 3 commits
    • Oleksandr Natalenko's avatar
    • Oleksandr Natalenko's avatar
      Merge branch 'bfq-5.5' into pf-5.5 · 1134bfc9
      Oleksandr Natalenko authored
    • Carlo Nonato's avatar
      block, bfq: fix overwrite of bfq_group pointer in bfq_find_set_group() · 187fbe95
      Carlo Nonato authored
      The bfq_find_set_group() function takes as input a blkcg (which represents
      a cgroup) and retrieves the corresponding bfq_group, then it updates the
      bfq internal group hierarchy (see comments inside the function for why
      this is needed) and finally it returns the bfq_group.
      In the hierarchy update cycle, the pointer holding the correct bfq_group
      that has to be returned is mistakenly used to traverse the hierarchy
      bottom to top, meaning that in each iteration it gets overwritten with the
      parent of the current group. Since the update cycle stops at root's
      children (depth = 2), the overwrite becomes a problem only if the blkcg
      describes a cgroup at a hierarchy level deeper than that (depth > 2). In
      this case the root's child that happens to be also an ancestor of the
      correct bfq_group is returned. The main consequence is that processes
      contained in a cgroup at depth greater than 2 are wrongly placed in the
      group described above by BFQ.
      This commits fixes this problem by using a different bfq_group pointer in
      the update cycle in order to avoid the overwrite of the variable holding
      the original group reference.
      Reported-by: default avatarKwon Je Oh <[email protected]>
      Signed-off-by: default avatarCarlo Nonato <[email protected]>
      Signed-off-by: default avatarPaolo Valente <[email protected]>
  2. 05 Mar, 2020 37 commits