1. 03 Feb, 2021 3 commits
    • Heyi Guo's avatar
      drivers/gicv3: fix logical issue for num_eints · 69ae4427
      Heyi Guo authored
      
      
      In function gicv3_spis_config_defaults(), the variable num_ints is set
      to (maximum SPI INTID + 1), while num_eints is set to (maximum ESPI
      INTID). It introduces not only inconsistency to the code, but also
      logical bug in the "for" loops, for the INTID of num_eints is also
      valid and the check should be inclusive.
      
      Fix this by setting num_eints to (maximum ESPI INTID + 1) as well.
      
      Fix similar issues in gicv3_distif_save() and
      gicv3_distif_init_restore().
      Signed-off-by: default avatarHeyi Guo <guoheyi@linux.alibaba.com>
      Change-Id: I4425777d17e84e85f38853603340bd348640154f
      69ae4427
    • Heyi Guo's avatar
      drivers/gicv3: fix potential GICD context override with ESPI enabled · deb18901
      Heyi Guo authored
      
      
      RESTORE/SAVE_GICD_EREGS uses (int_id - (MIN_ESPI_ID - MIN_SPI_ID)) to
      get the context array index for ESPI, which will override the space of
      standard SPI starting from (MIN_SPI_ID + MIN_SPI_ID).
      
      However, using TOTAL_SPI_INTR_NUM to replace the above MIN_SPI_ID
      cannot totally fix the issue, for TOTAL_SPI_INTR_NUM is not well
      aligned and the array index will be rounded down by the shifting
      operation if being shifted more than 2 bits. It will cause buffer
      override again when the existing maximum SPI reaches 1019.
      
      So round up TOTAL_SPI_INTR_NUM with (1 << REG##R_SHIFT) for GICD
      context arrays.
      Signed-off-by: default avatarHeyi Guo <guoheyi@linux.alibaba.com>
      Change-Id: I5be2837c42f381a62f8d46a4ecd778009b1fe059
      deb18901
    • Heyi Guo's avatar
      drivers/gicv3: use mpidr to probe GICR for current CPU · 60cd8030
      Heyi Guo authored
      
      
      In function gicv3_rdistif_probe(), line #1322 implies
      gicv3_driver_data->mpidr_to_core_pos() may be null, but the original
      code uses this interface to get current CPU index unconditionally.
      
      It is better to use MPIDR to probe GICR which does not depend on
      gicv3_driver_data->mpidr_to_core_pos().
      Signed-off-by: default avatarHeyi Guo <guoheyi@linux.alibaba.com>
      Change-Id: I64add055385040fe0a56b977e2299608e2309a6e
      60cd8030
  2. 02 Feb, 2021 9 commits
  3. 30 Jan, 2021 1 commit
  4. 29 Jan, 2021 13 commits
  5. 28 Jan, 2021 4 commits
  6. 27 Jan, 2021 5 commits
    • Lauren Wehrmeister's avatar
    • Nikos Nikoleris's avatar
      fdts: Fix stdout-path in various platforms · fcb0ea19
      Nikos Nikoleris authored
      
      
      The value of stdout-path is a string and as a result, we can't use a
      label as a reference to the serial0 node. This change fixes the
      stdout-path property for N1SDP, Morello and TC0 by pointing to the
      right alias.
      Signed-off-by: default avatarNikos Nikoleris <nikos.nikoleris@arm.com>
      Change-Id: I3d403389a424569be56327fab4140fec06f96d37
      fcb0ea19
    • Madhukar Pappireddy's avatar
      Merge changes from topic "scmi-msg" into integration · 26dccba6
      Madhukar Pappireddy authored
      * changes:
        doc: maintainers: add scmi server
        drivers: move scmi-msg out of st
      26dccba6
    • Jimmy Brisson's avatar
      cert-tool: avoid duplicates in extension stack · 1ed941c0
      Jimmy Brisson authored
      
      
      This bug manifests itself as a segfault triggered by a double-free.
      
      I noticed that right before the double-free, the sk list contained 2
      elements with the same address.
      
          (gdb) p sk_X509_EXTENSION_value(sk, 1)
          $34 = (X509_EXTENSION *) 0x431ad0
          (gdb) p sk_X509_EXTENSION_value(sk, 0)
          $35 = (X509_EXTENSION *) 0x431ad0
          (gdb) p sk_X509_EXTENSION_num(sk)
          $36 = 2
      
      This caused confusion; this should never happen.
      
      I figured that this was caused by a ext_new_xxxx function freeing
      something before it is added to the list, so I put a breakpoint on
      each of them to step through. I was suprised to find that none of my
      breakpoints triggered for the second element of the iteration through
      the outer loop just before the double-free.
      
      Looking through the code, I noticed that it's possible to avoid doing
      a ext_new_xxxx, when either:
         * ext->type == NVCOUNTER and ext->arg == NULL
         * ext->type == HASH and ext->arg == NULL and ext->optional == false
      So I put a breakpoint on both.
      
      It turns out that it was the HASH version, but I added a fix for both.
      The fix for the Hash case is simple, as it was a mistake. The fix for
      the NVCOUNTER case, however, is a bit more subtle. The NVCOUNTER may
      be optional, and when it's optional we can skip it. The other case,
      when the NVCOUNTER is required (not optinal), the `check_cmd_params`
      function has already verified that the `ext->arg` must be non-NULL.
      We assert that before processing it to covert any possible segfaults
      into more descriptive errors.
      
      This should no longer cause double-frees by adding the same ext twice.
      
      Change-Id: Idae2a24ecd964b0a3929e6193c7f85ec769f6470
      Signed-off-by: default avatarJimmy Brisson <jimmy.brisson@arm.com>
      1ed941c0
    • Manish V Badarkhe's avatar
      tools: cert_create: Create only requested certificates · 294e2656
      Manish V Badarkhe authored
      
      
      The certification tool creates all the certificates mentioned
      statically in the code rather than taking explicit certificate
      requests from the command line parameters.
      
      Code is optimized to avoid unnecessary attempts to create
      non-requested certificates.
      Signed-off-by: default avatarManish V Badarkhe <Manish.Badarkhe@arm.com>
      Change-Id: I78feac25bc701bf8f08c6aa5a2e1590bec92d0f2
      294e2656
  7. 26 Jan, 2021 3 commits
  8. 25 Jan, 2021 2 commits