Re: [PATCH 1/2] crypto: use SM3 instead of SM3_256

From: Jarkko Sakkinen
Date: Mon Oct 18 2021 - 09:58:34 EST


On Mon, 2021-10-18 at 09:32 -0400, James Bottomley wrote:
> On Mon, 2021-10-18 at 16:27 +0300, Jarkko Sakkinen wrote:
> > On Mon, 2021-10-18 at 09:05 -0400, James Bottomley wrote:
> > > On Sat, 2021-10-09 at 21:08 +0800, Tianjia Zhang wrote:
> > > [...]
> > > > diff --git a/include/uapi/linux/hash_info.h
> > > > b/include/uapi/linux/hash_info.h
> > > > index 74a8609fcb4d..1355525dd4aa 100644
> > > > --- a/include/uapi/linux/hash_info.h
> > > > +++ b/include/uapi/linux/hash_info.h
> > > > @@ -32,7 +32,7 @@ enum hash_algo {
> > > >         HASH_ALGO_TGR_128,
> > > >         HASH_ALGO_TGR_160,
> > > >         HASH_ALGO_TGR_192,
> > > > -       HASH_ALGO_SM3_256,
> > > > +       HASH_ALGO_SM3,
> > > >         HASH_ALGO_STREEBOG_256,
> > > >         HASH_ALGO_STREEBOG_512,
> > > >         HASH_ALGO__LAST
> > >
> > > This is another one you can't do: all headers in UAPI are exports
> > > to userspace and the definitions constitute an ABI.  If you simply
> > > do a rename, every userspace program that uses the current
> > > definition will immediately break on compile.  You could add
> > > HASH_ALGO_SM3, but you can't remove HASH_ALGO_SM3_256
> > >
> > > James
> >
> > So: shouldn't then also the old symbol continue to work also
> > semantically?
>
> Yes, that's the point: you can add a new definition ... in this case an
> alias for the old one, but you can't remove a definition that's been
> previously exported.

Thanks, this of course obvious :-) I forgot temporarily that crypto
has uapi interface. Tianjia, this patch set break production systems,
so no chance we would ever merge it in this form.

Why not just do this:

...
HASH_ALGO_SM3_256,
HASH_ALOG_SM3 = HASH_ALOG_SM_256,
...

There is not good reason to mod the implementation because both symbols
are kept.

/Jarkko