Re: module parameters permission

From: Fabio Aiuto
Date: Thu Apr 29 2021 - 06:25:51 EST


On Thu, Apr 29, 2021 at 12:05:08PM +0200, Greg KH wrote:
> On Thu, Apr 29, 2021 at 11:58:20AM +0200, Fabio Aiuto wrote:
> > Hi all,
> >
> > I'm trying to declare module parameters this way:
> >
> >
> > params: {
> > scull_major: i32 {
> > default: 0,
> > permissions: bindings::S_IRUGO as i32,
> > description: b"Major number",
> > },
> > scull_minor: i32 {
> > default: 0,
> > permissions: bindings::S_IRUGO as i32,
> > description: b"Minor number",
> > },
> >
> > i.e. using S_IRUGO macro exposed by bindgen. But I have the
> > following compiler error:
> >
> > error: proc macro panicked
> > --> samples/rust/rust_scull.rs:12:1
> > |
> > 12 | / module! {
> > 13 | | type: RustScull,
> > 14 | | name: b"rust_scull",
> > 15 | | author: b"Alessandro Rubini, Jonathan Corbet",
> > ... |
> > 44 | | },
> > 45 | | }
> > | |_^
> > |
> > = help: message: Expected Literal
> >
> > the same if I remove as i32 casts.
> >
> > if I write permissions as in samples/rust/rust_module_parameters.rs
> >
> > params: {
> > my_bool: bool {
> > default: true,
> > permissions: 0,
> > description: b"Example of bool",
> > },
> > my_i32: i32 {
> > default: 42,
> > permissions: 0o644, <-------
> > description: b"Example of i32",
> > },
> >
> > I get no error.
> >
> > What's the right way to use S_I*UGO macros?
>
> Not at all, use the octal values instead please.
>
> That's the way that we have declared a while ago, and I think
> checkpatch.pl will even catch if you try to do this in any new code.
> Please don't force us to deal with S_* defines in rust code as well.
>
> thanks,
>
> greg k-h

thank you I didn't know that. I will use octal than.

Anyway I'd like to know what was the matter with those bindings...

fabio