Re: [PATCH] Declare the file_operations struct as const

From: Bryan Brattlof
Date: Fri Aug 27 2021 - 19:38:52 EST


Hi Krish!

I'm sure someone has said something by now, however "top posting", where
you reply to emails by writing on the top can make things hard to read
on the mailing lists. The conversation is upside down when reading.

https://en.wikipedia.org/wiki/Posting_style#Top-posting

Next time try writing underneath the text your referring to like this:
Don't worry we're all learning here :)

On this day, August 27, 2021 thus sayeth Krish Jain:
> I unfortunately forgot to add Greg to this thread. Doing so now. I
> apologize for the confusion, if any. This patch was regarding the
> staging tree's file android/ashmem.c and declaring the file_operations
> struct as const as done elsewhere in the kernel, because there are no
> modifications to its fields.
>
> Warm Regards
>

Things can be a little deceiving in the kernel. That's why testing your
changes before you submit them can be helpful.

But don't worry too much if you break something, there are countless
bots trying to break the kernel every day. It usually means you're
learning when you break something.

>
> On Fri, Aug 27, 2021 at 8:38 PM Krish Jain <krishjain02939@xxxxxxxxx> wrote:
> >
> > So what do you think I can do?
> >
> > Best Regards
> >

That's a tough one as it really depends on your situation. When I first
started programming I had a *really* old (even for that time) laptop
that couldn't do much. It wasn't ideal but I found I could connect
through ssh to a virtual machine my university lent me to "learn to
code".

I have no idea what your situation is like. Though having a second
computer to compile code while I wrote worked for me.

> >
> > On Fri, Aug 27, 2021 at 10:50 AM Krish Jain <krishjain02939@xxxxxxxxx> wrote:
> > >
> > > Hi, yes, this is my first time programming at this low level. And yes,
> > > I read both docs now. Furthermore the issue is that my current
> > > hardware can't handle building the kernel, it barely managed to
> > > survive the first build after 2 hours so I don't know how I can. If I
> > > change it to static const would it fix the issue and build
> > > successfully? If not what would be the error message, then I can
> > > debug. Thanks
> > >

As for your patch, I built the driver using:

$ make CCFLAGS=-Werror W=1 M=drivers/staging/android

Which produced the following error:


drivers/staging/android/ashmem.c: In function ‘ashmem_mmap’:
drivers/staging/android/ashmem.c:380:2: warning: ‘static’ is not at beginning of declaration [-Wold-style-declaration]
380 | const static struct file_operations vmfile_fops;
| ^~~~~
drivers/staging/android/ashmem.c:431:16: error: assignment of read-only variable ‘vmfile_fops’
431 | vmfile_fops = *vmfile->f_op;
| ^
drivers/staging/android/ashmem.c:432:21: error: assignment of member ‘mmap’ in read-only object
432 | vmfile_fops.mmap = ashmem_vmfile_mmap;
| ^
drivers/staging/android/ashmem.c:433:34: error: assignment of member ‘get_unmapped_area’ in read-only object
433 | vmfile_fops.get_unmapped_area =
| ^
make[1]: *** [scripts/Makefile.build:271: drivers/staging/android/ashmem.o] Error 1
make: *** [Makefile:1851: drivers/staging/android] Error 2


You shouldn't need to compile the entire kernel. That may be why your
computer is having a hard time?

Hope this helps :) and it was nice to meet you Krish
~Bryan