[PATCH] staging: comedi: ni_mio_common: protect register write overflow

Ian Abbott abbotti at mev.co.uk
Wed Oct 3 10:34:40 UTC 2018


On 03/10/18 02:24, Spencer Olson wrote:
> On Tue, Oct 2, 2018 at 6:16 PM Spencer Olson <olsonse at umich.edu> wrote:
>>
>> On Tue, Oct 2, 2018 at 11:32 AM Greg Kroah-Hartman
>> <gregkh at linuxfoundation.org> wrote:
>>>
>>> On Wed, Sep 19, 2018 at 10:17:19AM -0600, Spencer E. Olson wrote:
[snip]
>>>> diff --git a/drivers/staging/comedi/drivers/ni_mio_common.c b/drivers/staging/comedi/drivers/ni_mio_common.c
>>>> index 4dee2fc37aed..4d0d0621780e 100644
>>>> --- a/drivers/staging/comedi/drivers/ni_mio_common.c
>>>> +++ b/drivers/staging/comedi/drivers/ni_mio_common.c
>>>> @@ -4980,7 +4980,10 @@ static int ni_valid_rtsi_output_source(struct comedi_device *dev,
>>>>        case NI_RTSI_OUTPUT_G_SRC0:
>>>>        case NI_RTSI_OUTPUT_G_GATE0:
>>>>        case NI_RTSI_OUTPUT_RGOUT0:
>>>> -     case NI_RTSI_OUTPUT_RTSI_BRD_0:
>>>> +     case NI_RTSI_OUTPUT_RTSI_BRD(0):
>>>> +     case NI_RTSI_OUTPUT_RTSI_BRD(1):
>>>> +     case NI_RTSI_OUTPUT_RTSI_BRD(2):
>>>> +     case NI_RTSI_OUTPUT_RTSI_BRD(3):
>>>>                return 1;
>>>>        case NI_RTSI_OUTPUT_RTSI_OSC:
>>>>                return (devpriv->is_m_series) ? 1 : 0;
>>>> @@ -5001,11 +5004,18 @@ static int ni_set_rtsi_routing(struct comedi_device *dev,
>>>>                devpriv->rtsi_trig_a_output_reg |= NISTC_RTSI_TRIG(chan, src);
>>>>                ni_stc_writew(dev, devpriv->rtsi_trig_a_output_reg,
>>>>                              NISTC_RTSI_TRIGA_OUT_REG);
>>>> -     } else if (chan < 8) {
>>>> +     } else if (chan < NISTC_RTSI_TRIG_NUM_CHAN(devpriv->is_m_series)) {
>>>>                devpriv->rtsi_trig_b_output_reg &= ~NISTC_RTSI_TRIG_MASK(chan);
>>>>                devpriv->rtsi_trig_b_output_reg |= NISTC_RTSI_TRIG(chan, src);
>>>>                ni_stc_writew(dev, devpriv->rtsi_trig_b_output_reg,
>>>>                              NISTC_RTSI_TRIGB_OUT_REG);
>>>> +     } else if (chan != NISTC_RTSI_TRIG_OLD_CLK_CHAN) {
>>>> +             /* probably should never reach this, since the
>>>> +              * ni_valid_rtsi_output_source above errors out if chan is too
>>>> +              * high
>>>> +              */

While you're fixing it, could that be changed to the usual block comment 
format?

>>>> +             dev_err(dev->class_dev, "%s: unknown rtsi channel\n", __func__);
>>>
>>> This patch breaks the build very badly.  Always test-build your patches
>>> at the very least :(
>>>
>>> greg k-h
>>
>> I have been test building this with at least a fairly recent
>> staging-next rebase (rebase a week or two ago).  I'll rebase again and
>> check this out....
> 
> So the problem had been that I had been compiling the entire time with
> my other patch set that I recently have just submitted.  When I split
> this patch off from that patch set, I had neglected to compile with it
> by itsself.  The issue was a forgotten "{" at the beginning of the
> last if statement.
> 
> Should I resubmit this patch and the entire patch set from earlier
> today, each separately?
> 
> The patch set from today titled "device-global identifiers and routes
> introduced" _does_ depend on this patch that was missing the
> brace--this is indicated in the patch notes as requested by Ian.

Hmm yes, it appears patch 07/13 fixes this one, as well as depending on it!

Personally, I'd be inclined to combine them into a single series of 14 
patches.

> I did just check to make sure that I had not made the same mistake on
> the other patch set submitted earlier that was titled: "Add facility
> to directly query subdevice timing".  That patch set is fine as is and
> did not depend on any of the other patches I had been working on.

-- 
-=( Ian Abbott <abbotti at mev.co.uk> || Web: www.mev.co.uk )=-
-=( MEV Ltd. is a company registered in England & Wales. )=-
-=( Registered number: 02862268.  Registered address:    )=-
-=( 15 West Park Road, Bramhall, STOCKPORT, SK7 3JZ, UK. )=-


More information about the devel mailing list