lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Sun, 20 Jun 2021 18:25:21 +0530
From:   Ojaswin Mujoo <ojaswin98@...il.com>
To:     nsaenz@...nel.org
Cc:     gregkh@...uxfoundation.org, stefan.wahren@...e.com, arnd@...db.de,
        dan.carpenter@...cle.com, phil@...pberrypi.com,
        bcm-kernel-feedback-list@...adcom.com,
        linux-arm-kernel@...ts.infradead.org,
        linux-staging@...ts.linux.dev, linux-kernel@...r.kernel.org
Subject: [PATCH v2 0/5] vchiq: Patch to separate platform and cdev code

Hello,

This patchset adderesses the TODO item number 10 specified at:

    drivers/staging/vc04-services/interface/TODO

For reference, the task is:

    10) Reorganize file structure: Move char driver to it's own file and join
    both platform files

    The cdev is defined alongside with the platform code in vchiq_arm.c. It
    would be nice to completely decouple it from the actual core code. For
    instance to be able to use bcm2835-audio without having /dev/vchiq created.
    One could argue it's better for security reasons or general cleanliness. It
    could even be interesting to create two different kernel modules, something
    the likes of vchiq-core.ko and vchiq-dev.ko. This would also ease the
    upstreaming process.

As Stefan suggested in the last revision, I have split the commits into
more finer parts for ease of readability and maintainability. I have
also added 2 more patches to define a KConfig entry for vchiq cdev, and
to merge the code in vchiq_2835_arm.c to vchiq_arm.c

A summary of the patches is now as follows:

- Patch 1: Move cdev init code into a function
- Patch 2: Shift some devlarations from vchiq_arm.c to vchiq_arm.h for
           sharing
- Patch 3: Move vchiq cdev init code from vchiq_arm.c into vchiq_dev.c
- Patch 4: Decouple cdev code by defining a Kconfig entry to allow
           optional compilation of it.
- Patch 5: Merge code in vchiq_2835_arm.c to vchiq_arm.c

(More details can be found in the commit messages)


NOTE:  This patchset is built against the raspberry pi mainline kernel at
https://github.com/raspberrypi/linux/blob/rpi-5.10.y, and has been
tested on Raspberry Pi 3B+

At this point, I have some questions and ideas and would like to hear your
thoughts and suggestions on them:

1. So as mentioned, I have built this against the raspberry pi kernel,
   since I was not able to figure out a way to build the vanilla
   mainline kernel for Raspberry Pi. However, I understand that since
   this will be applied to the mainline, I need to make sure it is
   consistent with it.  

   Hence to confirm that, I tried to "git am" this patchset to the
   mainline kernel but there are some merge conflicts in doing so. I
   have an idea how to resolve most of them except the following:

    - The mainline vchiq_arm.c differs from the one in rapberry pi
      mainline which caused conflict in Patch 3.

   I'm not sure which vchiq_arm.c to treat as the base for my patches.
   The one in mainline? or the one in raspberry pi's git tree?


2. This question is more related to the next set of patches I'm
   planning to submit. So the last thing left in this TODO is to
   completely decouple vchiq platform and cdev code into 2 separate
   modules and I am planning to do that in a different patchset. 

   The approach I have in mind is to start by using EXPORT_SYMBOL to
   export all the functions (and accessor functions for variables like
   g_state) that would be required for cdev init. Majority of these
   would be exported from vchiq_arm.c and vchiq_core.c, and will then be
   used in vchiq-dev.ko. Is this the right way to approach this? 

Thank you in advance for looking into this and best regards!
Ojaswin


Ojaswin Mujoo (5):
  staging: vchiq: Refactor vchiq cdev code
  staging: vchiq: Move certain declarations to vchiq_arm.h
  staging: vchiq: Move vchiq char driver to its own file
  staging: vchiq: Make creation of vchiq cdev optional
  staging: vchiq: Combine vchiq platform code into single file

 arch/arm/configs/bcm2709_defconfig            |    1 +
 arch/arm/configs/bcm2711_defconfig            |    1 +
 arch/arm/configs/bcmrpi_defconfig             |    1 +
 drivers/staging/vc04_services/Kconfig         |   10 +
 drivers/staging/vc04_services/Makefile        |    5 +-
 .../interface/vchiq_arm/vchiq_2835_arm.c      |  651 -----
 .../interface/vchiq_arm/vchiq_arm.c           | 2477 ++++++-----------
 .../interface/vchiq_arm/vchiq_arm.h           |   79 +
 .../interface/vchiq_arm/vchiq_dev.c           | 1488 ++++++++++
 9 files changed, 2402 insertions(+), 2311 deletions(-)
 delete mode 100644 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
 create mode 100644 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c

-- 
2.25.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ