1. 27 Oct, 2023 3 commits
    • Herbert Xu's avatar
      crypto: rsa - Add module alias for pkcs1pad · f5fb88e5
      Herbert Xu authored
      Add a module alias for pkcs1pas so that it can be auto-loaded by
      modprobe.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      f5fb88e5
    • Herbert Xu's avatar
      certs: Break circular dependency when selftest is modular · 04a93202
      Herbert Xu authored
      The modular build fails because the self-test code depends on pkcs7
      which in turn depends on x509 which contains the self-test.
      
      Split the self-test out into its own module to break the cycle.
      
      Fixes: 3cde3174 ("certs: Add FIPS selftests")
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Reviewed-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      04a93202
    • WangJinchao's avatar
      padata: Fix refcnt handling in padata_free_shell() · 7ddc21e3
      WangJinchao authored
      In a high-load arm64 environment, the pcrypt_aead01 test in LTP can lead
      to system UAF (Use-After-Free) issues. Due to the lengthy analysis of
      the pcrypt_aead01 function call, I'll describe the problem scenario
      using a simplified model:
      
      Suppose there's a user of padata named `user_function` that adheres to
      the padata requirement of calling `padata_free_shell` after `serial()`
      has been invoked, as demonstrated in the following code:
      
      ```c
      struct request {
          struct padata_priv padata;
          struct completion *done;
      };
      
      void parallel(struct padata_priv *padata) {
          do_something();
      }
      
      void serial(struct padata_priv *padata) {
          struct request *request = container_of(padata,
          				struct request,
      				padata);
          complete(request->done);
      }
      
      void user_function() {
          DECLARE_COMPLETION(done)
          padata->parallel = parallel;
          padata->serial = serial;
          padata_do_parallel();
          wait_for_completion(&done);
          padata_free_shell();
      }
      ```
      
      In the corresponding padata.c file, there's the following code:
      
      ```c
      static void padata_serial_worker(struct work_struct *serial_work) {
          ...
          cnt = 0;
      
          while (!list_empty(&local_list)) {
              ...
              padata->serial(padata);
              cnt++;
          }
      
          local_bh_enable();
      
          if (refcount_sub_and_test(cnt, &pd->refcnt))
              padata_free_pd(pd);
      }
      ```
      
      Because of the high system load and the accumulation of unexecuted
      softirq at this moment, `local_bh_enable()` in padata takes longer
      to execute than usual. Subsequently, when accessing `pd->refcnt`,
      `pd` has already been released by `padata_free_shell()`, resulting
      in a UAF issue with `pd->refcnt`.
      
      The fix is straightforward: add `refcount_dec_and_test` before calling
      `padata_free_pd` in `padata_free_shell`.
      
      Fixes: 07928d9b ("padata: Remove broken queue flushing")
      Signed-off-by: default avatarWangJinchao <wangjinchao@xfusion.com>
      Acked-by: default avatarDaniel Jordan <daniel.m.jordan@oracle.com>
      Acked-by: default avatarDaniel Jordan <daniel.m.jordan@oracle.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      7ddc21e3
  2. 20 Oct, 2023 26 commits
  3. 14 Oct, 2023 1 commit
    • Weili Qian's avatar
      crypto: hisilicon/qm - alloc buffer to set and get xqc · 5b90073d
      Weili Qian authored
      If the temporarily applied memory is used to set or get the xqc
      information, the driver releases the memory immediately after the
      hardware mailbox operation time exceeds the driver waiting time.
      However, the hardware does not cancel the operation, so the hardware
      may write data to released memory.
      
      Therefore, when the driver is bound to a device, the driver reserves
      memory for the xqc configuration. The subsequent xqc configuration
      uses the reserved memory to prevent hardware from accessing the
      released memory.
      Signed-off-by: default avatarWeili Qian <qianweili@huawei.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      5b90073d
  4. 13 Oct, 2023 10 commits