Re: [PATCH] Declare the file_operations struct as const

From: Krish Jain
Date: Sat Aug 28 2021 - 22:34:47 EST


On Sat, Aug 28, 2021 at 1:38 AM Bryan Brattlof <hello@xxxxxxxxxxxxxxxxx> wrote:
>
> 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
>

Hi, this seems very useful and I tried this myself just now. I don't
get any errors that you do though. When I hit enter I just get a new
shell prompt. What am I doing wrong? Probably a silly mistake. I ran
make CCFLAGS=-Werror M=drivers/staging/android/.


- Krish

> 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
>