Re: [EXT] Re: WTF: patch "[PATCH] scsi: qla2xxx: Fix response queue handler reading stale" was seriously submitted to be applied to the 5.19-stable tree?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 16 Aug 2022, 2:30am, Greg KH wrote:

> On Mon, Aug 15, 2022 at 03:35:09PM -0700, Arun Easi wrote:
> > Hi Greg,
> > 
> > On Sat, 13 Aug 2022, 6:46am, Greg KH wrote:
> > 
> > > 
> > > ----------------------------------------------------------------------
> > > On Sat, Aug 13, 2022 at 03:30:37PM +0200, gregkh@xxxxxxxxxxxxxxxxxxx wrote:
> > > > The patch below was submitted to be applied to the 5.19-stable tree.
> > > > 
> > > > I fail to see how this patch meets the stable kernel rules as found at
> > > > Documentation/process/stable-kernel-rules.rst.
> > > > 
> > > > I could be totally wrong, and if so, please respond to 
> > > > <stable@xxxxxxxxxxxxxxx> and let me know why this patch should be
> > > > applied.  Otherwise, it is now dropped from my patch queues, never to be
> > > > seen again.
> > > > 
> > > > thanks,
> > > > 
> > > > greg k-h
> > > > 
> > > > ------------------ original commit in Linus's tree ------------------
> > > > 
> > > > >From b1f707146923335849fb70237eec27d4d1ae7d62 Mon Sep 17 00:00:00 2001
> > > > From: Arun Easi <aeasi@xxxxxxxxxxx>
> > > > Date: Tue, 12 Jul 2022 22:20:39 -0700
> > > > Subject: [PATCH] scsi: qla2xxx: Fix response queue handler reading stale
> > > >  packets
> > > > 
> > > > On some platforms, the current logic of relying on finding new packet
> > > > solely based on signature pattern can lead to driver reading stale
> > > > packets. Though this is a bug in those platforms, reduce such exposures by
> > > > limiting reading packets until the IN pointer.
> > > > 
> > > > Two module parameters are introduced:
> > > > 
> > > >   ql2xrspq_follow_inptr:
> > > > 
> > > >     When set, on newer adapters that has queue pointer shadowing, look for
> > > >     response packets only until response queue in pointer.
> > > > 
> > > >     When reset, response packets are read based on a signature pattern
> > > >     logic (old way).
> > > > 
> > > >   ql2xrspq_follow_inptr_legacy:
> > > > 
> > > >     Like ql2xrspq_follow_inptr, but for those adapters where there is no
> > > >     queue pointer shadowing.
> > > 
> > > On a meta-note, this patch seems VERY wrong.  You are adding a
> > > driver-wide module option for a device-specific action.  That should be
> > > a device-specific functionality, not a module.
> > > 
> > > Again, as I say many times, this isn't the 1990's, please never add new
> > > module parameters.  Use the other interfaces we have in the kernel to
> > > configure individual devices properly, module parameters are not to be
> > > used for that at all for anything new.
> > > 
> > > So, can you revert this commit and do it properly please?
> > > 
> > 
> > The reason I chose module parameter way was because of these primarily:
> > 
> > 1 As this is a platform specific issue, this behavior does not require a 
> >   device granular level tuning. Either all the said adapters turns the 
> >   behavior on or off.
> 
> What is going to allow a user to know to do this or not?  Why is this
> needed at all, and why doesn't the driver automatically know what to do
> either based on the device id, or the platform, or the workload?

The change is to err on the side of caution and make the logic 
a bit conservative at the same time providing an option for those 
platforms or architectures where the issue is not applicable, but the 
logic is causing a reduction in performance.

> 
> Forcing a user to pick something for "tuning" like this is horrible and
> messy and almost impossible to support properly over time.

The option is intended for slightly advanced users, platform or os 
vendors etc. When it comes to an end user, I agree it is challenging to 
know if a change from default is needed or not.

> Just do it in the driver automatically and then there's no need for any 
> options at all.

The platform bug exhibited as driver accessing stale memory, so it is 
tough to automatically tune the value automatically.

> 
> > 2 Module parameters allowed persistence without complexity: Since this 
> >   adapter is also used in booting on some environments, module parameter 
> >   allowed the configurability as well as simplicity.
> 
> Just because it is easy does not mean it is correct.  It is a
> device-specific option being applied to ALL devices in the system, which
> feels wrong.  If it is correct, then just do it automatically in the
> driver based on platform information.
> 
> > If the above approach is discouraged, the alternatives that comes to my 
> > mind are:
> > 
> > 1 Add a sysfs node 
> 
> Sure!
> 
> > 2 Add a debugfs node
> 
> Only if this really is only for debugging as that's what debugfs is for.
> You can never rely on debugfs to be present or accessable for anything
> that the system relies on for functionality.
> 
> > 3 /proc/sys/kernel ? (but that is not per adapter specific)
> 
> Ick, no.
> 
> > 4 Add a udev script to watch for PCI adapter addition and set/reset 1, 2 
> >   or 3
> 
> Your udev script will tie into the sysfs node.
> 
> > If udev route is taken, I'd have to come up with a configuration file to 
> > save tunable state, which could be a bit cumbersome and needs 
> > documentation and be different (in terms of script location/submitting) 
> > distro to distro.
> 
> How is a module parameter saving any state anywhere?

Since module parameter could be configured via modprobe.conf/equivalent, a 
user could set the value of his choice in that file and have the value 
persisted.

Regards,
-Arun

> Your sysfs rule should be identical to the rule that causes you to write 
> the module parameter file out to the device.
> 
> And then that logic, again, really should just be in the driver itself
> with no option needed at all.
> 
> Again, resist the option to force a user to do anything, that's messy
> and painful and not what a kernel should do if at all possible.
> 



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux