On Tue, Oct 10, 2023 at 09:55:25AM +0200, Alexander Graf wrote:
Hey Greg,Yes, why are we parsing this in the kernel? What could go wrong with
On 10.10.23 08:13, Greg Kroah-Hartman wrote:
On Mon, Oct 09, 2023 at 09:20:52PM +0000, Alexander Graf wrote:
To fully support the Nitro Secure Module communication protocol, we needWhat is "CBOR"? I don't see a description of it here.
to encode and decode CBOR binary data. Import an MIT licensed library
from https://github.com/libmcu/cbor (commit f3d1696f886) so that we can
easily consume CBOR data.
CBOR is the "Concise Binary Object Representation"
(https://en.wikipedia.org/wiki/CBOR) binary format.
And I guess you are going to keep this in sync with upstream? Or do you
really need the full library here (you #ifdef the float stuff out), does
your module really need all of the functionality and complexity of this
library, or can it use just a much smaller one instead?
CBOR knows a total of 9 data types:
- Unsigned integers
- Signed integers
- Binary string
- UTF-8 string
- Arrays
- Maps (like a python dictionary)
- Semantic tag
- Bools
- Floats
Out of these, the NSM communication protocol uses all except Semantic tags
and Floats. The CBOR library that this patch imports does not have special
handling for Semantic tags, which leaves only floats which are already
#ifdef'ed out. That means there is not much to trim.
What you see here is what's needed to parse CBOR in kernel - if that's what
we want to do. I'm happy to rip it out again and make it a pure user space
problem to do CBOR :).
adding yet-another-parser in privileged context? :)
Why does this have to be in the kernel, the data sent/recieved is over
virtio, so why does the kernel have to parse it? I couldn't figure that
out from the driver, yet the driver seems to have a lot of hard-coded
parsing logic in it to assume specific message formats?