Message ID | 20210508071152.722425-1-lingshan.zhu@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Revert "irqbypass: do not start cons/prod when failed connect" | expand |
On Sat, May 08, 2021 at 03:11:52PM +0800, Zhu Lingshan wrote: > This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88. > > The reverted commit may cause VM freeze on arm64 platform. > Because on arm64 platform, stop a consumer will suspend the VM, > the VM will freeze without a start consumer > > Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> > --- > virt/lib/irqbypass.c | 16 ++++++---------- > 1 file changed, 6 insertions(+), 10 deletions(-) > <formletter> This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read: https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html for how to do this properly. </formletter>
On Sat, 08 May 2021 08:11:52 +0100, Zhu Lingshan <lingshan.zhu@intel.com> wrote: > > This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88. > > The reverted commit may cause VM freeze on arm64 platform. > Because on arm64 platform, stop a consumer will suspend the VM, > the VM will freeze without a start consumer It also unconditionally calls del_consumer on the producer, which isn't exactly expected. > > Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> Reported-by: Shaokun Zhang <zhangshaokun@hisilicon.com> Suggested-by: Marc Zyngier <maz@kernel.org> Acked-by: Marc Zyngier <maz@kernel.org> Fixes: a979a6aa009f ("irqbypass: do not start cons/prod when failed connect") Link: https://lore.kernel.org/r/3a2c66d6-6ca0-8478-d24b-61e8e3241b20@hisilicon.com Cc: stable@vger.kernel.org Thanks, M.
Hi, On 5/8/21 11:29 AM, Marc Zyngier wrote: > On Sat, 08 May 2021 08:11:52 +0100, > Zhu Lingshan <lingshan.zhu@intel.com> wrote: >> >> This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88. >> >> The reverted commit may cause VM freeze on arm64 platform. >> Because on arm64 platform, stop a consumer will suspend the VM, >> the VM will freeze without a start consumer > > It also unconditionally calls del_consumer on the producer, which > isn't exactly expected. > >> >> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> > > Reported-by: Shaokun Zhang <zhangshaokun@hisilicon.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Thanks Eric > Suggested-by: Marc Zyngier <maz@kernel.org> > Acked-by: Marc Zyngier <maz@kernel.org> > Fixes: a979a6aa009f ("irqbypass: do not start cons/prod when failed connect") > Link: https://lore.kernel.org/r/3a2c66d6-6ca0-8478-d24b-61e8e3241b20@hisilicon.com > Cc: stable@vger.kernel.org > > Thanks, > > M. >
Hi Marc, On 2021/5/8 17:29, Marc Zyngier wrote: > On Sat, 08 May 2021 08:11:52 +0100, > Zhu Lingshan <lingshan.zhu@intel.com> wrote: >> >> This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88. >> >> The reverted commit may cause VM freeze on arm64 platform. >> Because on arm64 platform, stop a consumer will suspend the VM, >> the VM will freeze without a start consumer > > It also unconditionally calls del_consumer on the producer, which > isn't exactly expected. > >> >> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> > > Reported-by: Shaokun Zhang <zhangshaokun@hisilicon.com> Thanks for the tag, it works with this patch, So: Tested-by: Shaokun Zhang <zhangshaokun@hisilicon.com> I shall invite you to have a drink for the quick debug. Anyway, thank you again. Shaokun > Suggested-by: Marc Zyngier <maz@kernel.org> > Acked-by: Marc Zyngier <maz@kernel.org> > Fixes: a979a6aa009f ("irqbypass: do not start cons/prod when failed connect") > Link: https://lore.kernel.org/r/3a2c66d6-6ca0-8478-d24b-61e8e3241b20@hisilicon.com > Cc: stable@vger.kernel.org > > Thanks, > > M. >
在 2021/5/8 下午3:11, Zhu Lingshan 写道: > This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88. > > The reverted commit may cause VM freeze on arm64 platform. > Because on arm64 platform, stop a consumer will suspend the VM, > the VM will freeze without a start consumer > > Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> Acked-by: Jason Wang <jasowang@redhat.com> Please resubmit with the formal process of stable (stable-kernel-rules.rst). Thanks > --- > virt/lib/irqbypass.c | 16 ++++++---------- > 1 file changed, 6 insertions(+), 10 deletions(-) > > diff --git a/virt/lib/irqbypass.c b/virt/lib/irqbypass.c > index c9bb3957f58a..28fda42e471b 100644 > --- a/virt/lib/irqbypass.c > +++ b/virt/lib/irqbypass.c > @@ -40,21 +40,17 @@ static int __connect(struct irq_bypass_producer *prod, > if (prod->add_consumer) > ret = prod->add_consumer(prod, cons); > > - if (ret) > - goto err_add_consumer; > - > - ret = cons->add_producer(cons, prod); > - if (ret) > - goto err_add_producer; > + if (!ret) { > + ret = cons->add_producer(cons, prod); > + if (ret && prod->del_consumer) > + prod->del_consumer(prod, cons); > + } > > if (cons->start) > cons->start(cons); > if (prod->start) > prod->start(prod); > -err_add_producer: > - if (prod->del_consumer) > - prod->del_consumer(prod, cons); > -err_add_consumer: > + > return ret; > } >
On 5/10/2021 10:43 AM, Jason Wang wrote: > > 在 2021/5/8 下午3:11, Zhu Lingshan 写道: >> This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88. >> >> The reverted commit may cause VM freeze on arm64 platform. >> Because on arm64 platform, stop a consumer will suspend the VM, >> the VM will freeze without a start consumer >> >> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> > > > Acked-by: Jason Wang <jasowang@redhat.com> > > Please resubmit with the formal process of stable > (stable-kernel-rules.rst). sure, I will re-submit it to stable kernel once it is merged into Linus tree. Thanks > > Thanks > > >> --- >> virt/lib/irqbypass.c | 16 ++++++---------- >> 1 file changed, 6 insertions(+), 10 deletions(-) >> >> diff --git a/virt/lib/irqbypass.c b/virt/lib/irqbypass.c >> index c9bb3957f58a..28fda42e471b 100644 >> --- a/virt/lib/irqbypass.c >> +++ b/virt/lib/irqbypass.c >> @@ -40,21 +40,17 @@ static int __connect(struct irq_bypass_producer >> *prod, >> if (prod->add_consumer) >> ret = prod->add_consumer(prod, cons); >> - if (ret) >> - goto err_add_consumer; >> - >> - ret = cons->add_producer(cons, prod); >> - if (ret) >> - goto err_add_producer; >> + if (!ret) { >> + ret = cons->add_producer(cons, prod); >> + if (ret && prod->del_consumer) >> + prod->del_consumer(prod, cons); >> + } >> if (cons->start) >> cons->start(cons); >> if (prod->start) >> prod->start(prod); >> -err_add_producer: >> - if (prod->del_consumer) >> - prod->del_consumer(prod, cons); >> -err_add_consumer: >> + >> return ret; >> } >
在 2021/5/10 上午11:00, Zhu, Lingshan 写道: > > > On 5/10/2021 10:43 AM, Jason Wang wrote: >> >> 在 2021/5/8 下午3:11, Zhu Lingshan 写道: >>> This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88. >>> >>> The reverted commit may cause VM freeze on arm64 platform. >>> Because on arm64 platform, stop a consumer will suspend the VM, >>> the VM will freeze without a start consumer >>> >>> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> >> >> >> Acked-by: Jason Wang <jasowang@redhat.com> >> >> Please resubmit with the formal process of stable >> (stable-kernel-rules.rst). > sure, I will re-submit it to stable kernel once it is merged into > Linus tree. > > Thanks I think it's better to resubmit (option 1), see how stable-kernel-rules.rst said: "" :ref:`option_1` is **strongly** preferred, is the easiest and most common. :ref:`option_2` and :ref:`option_3` are more useful if the patch isn't deemed worthy at the time it is applied to a public git tree (for instance, because it deserves more regression testing first). """ Thanks >> >> Thanks >> >> >>> --- >>> virt/lib/irqbypass.c | 16 ++++++---------- >>> 1 file changed, 6 insertions(+), 10 deletions(-) >>> >>> diff --git a/virt/lib/irqbypass.c b/virt/lib/irqbypass.c >>> index c9bb3957f58a..28fda42e471b 100644 >>> --- a/virt/lib/irqbypass.c >>> +++ b/virt/lib/irqbypass.c >>> @@ -40,21 +40,17 @@ static int __connect(struct irq_bypass_producer >>> *prod, >>> if (prod->add_consumer) >>> ret = prod->add_consumer(prod, cons); >>> - if (ret) >>> - goto err_add_consumer; >>> - >>> - ret = cons->add_producer(cons, prod); >>> - if (ret) >>> - goto err_add_producer; >>> + if (!ret) { >>> + ret = cons->add_producer(cons, prod); >>> + if (ret && prod->del_consumer) >>> + prod->del_consumer(prod, cons); >>> + } >>> if (cons->start) >>> cons->start(cons); >>> if (prod->start) >>> prod->start(prod); >>> -err_add_producer: >>> - if (prod->del_consumer) >>> - prod->del_consumer(prod, cons); >>> -err_add_consumer: >>> + >>> return ret; >>> } >> >
On 5/10/2021 12:34 PM, Jason Wang wrote: > > 在 2021/5/10 上午11:00, Zhu, Lingshan 写道: >> >> >> On 5/10/2021 10:43 AM, Jason Wang wrote: >>> >>> 在 2021/5/8 下午3:11, Zhu Lingshan 写道: >>>> This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88. >>>> >>>> The reverted commit may cause VM freeze on arm64 platform. >>>> Because on arm64 platform, stop a consumer will suspend the VM, >>>> the VM will freeze without a start consumer >>>> >>>> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> >>> >>> >>> Acked-by: Jason Wang <jasowang@redhat.com> >>> >>> Please resubmit with the formal process of stable >>> (stable-kernel-rules.rst). >> sure, I will re-submit it to stable kernel once it is merged into >> Linus tree. >> >> Thanks > > > I think it's better to resubmit (option 1), see how > stable-kernel-rules.rst said: > > "" > > :ref:`option_1` is **strongly** preferred, is the easiest and most > common. > :ref:`option_2` and :ref:`option_3` are more useful if the patch isn't > deemed > worthy at the time it is applied to a public git tree (for instance, > because > it deserves more regression testing first). > > """ > > Thanks OK, works for me, I will add cc stable, and resubmit it soon Thanks! > > >>> >>> Thanks >>> >>> >>>> --- >>>> virt/lib/irqbypass.c | 16 ++++++---------- >>>> 1 file changed, 6 insertions(+), 10 deletions(-) >>>> >>>> diff --git a/virt/lib/irqbypass.c b/virt/lib/irqbypass.c >>>> index c9bb3957f58a..28fda42e471b 100644 >>>> --- a/virt/lib/irqbypass.c >>>> +++ b/virt/lib/irqbypass.c >>>> @@ -40,21 +40,17 @@ static int __connect(struct irq_bypass_producer >>>> *prod, >>>> if (prod->add_consumer) >>>> ret = prod->add_consumer(prod, cons); >>>> - if (ret) >>>> - goto err_add_consumer; >>>> - >>>> - ret = cons->add_producer(cons, prod); >>>> - if (ret) >>>> - goto err_add_producer; >>>> + if (!ret) { >>>> + ret = cons->add_producer(cons, prod); >>>> + if (ret && prod->del_consumer) >>>> + prod->del_consumer(prod, cons); >>>> + } >>>> if (cons->start) >>>> cons->start(cons); >>>> if (prod->start) >>>> prod->start(prod); >>>> -err_add_producer: >>>> - if (prod->del_consumer) >>>> - prod->del_consumer(prod, cons); >>>> -err_add_consumer: >>>> + >>>> return ret; >>>> } >>> >> >
On Mon, 10 May 2021 02:12:22 +0100, Shaokun Zhang <zhangshaokun@hisilicon.com> wrote: > > Hi Marc, > > On 2021/5/8 17:29, Marc Zyngier wrote: > > On Sat, 08 May 2021 08:11:52 +0100, > > Zhu Lingshan <lingshan.zhu@intel.com> wrote: > >> > >> This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88. > >> > >> The reverted commit may cause VM freeze on arm64 platform. > >> Because on arm64 platform, stop a consumer will suspend the VM, > >> the VM will freeze without a start consumer > > > > It also unconditionally calls del_consumer on the producer, which > > isn't exactly expected. > > > >> > >> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> > > > > Reported-by: Shaokun Zhang <zhangshaokun@hisilicon.com> > > Thanks for the tag, it works with this patch, So: > Tested-by: Shaokun Zhang <zhangshaokun@hisilicon.com> > > I shall invite you to have a drink for the quick debug. > Anyway, thank you again. No worries, glad we were able to root-cause the problem quickly enough. Thanks, M.
On 5/10/2021 3:09 PM, Zhu, Lingshan wrote: > > > On 5/10/2021 12:34 PM, Jason Wang wrote: >> >> 在 2021/5/10 上午11:00, Zhu, Lingshan 写道: >>> >>> >>> On 5/10/2021 10:43 AM, Jason Wang wrote: >>>> >>>> 在 2021/5/8 下午3:11, Zhu Lingshan 写道: >>>>> This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88. >>>>> >>>>> The reverted commit may cause VM freeze on arm64 platform. >>>>> Because on arm64 platform, stop a consumer will suspend the VM, >>>>> the VM will freeze without a start consumer >>>>> >>>>> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> >>>> >>>> >>>> Acked-by: Jason Wang <jasowang@redhat.com> >>>> >>>> Please resubmit with the formal process of stable >>>> (stable-kernel-rules.rst). >>> sure, I will re-submit it to stable kernel once it is merged into >>> Linus tree. >>> >>> Thanks >> >> >> I think it's better to resubmit (option 1), see how >> stable-kernel-rules.rst said: >> >> "" >> >> :ref:`option_1` is **strongly** preferred, is the easiest and most >> common. >> :ref:`option_2` and :ref:`option_3` are more useful if the patch >> isn't deemed >> worthy at the time it is applied to a public git tree (for instance, >> because >> it deserves more regression testing first). >> >> """ >> >> Thanks > OK, works for me, I will add cc stable, and resubmit it soon > > Thanks! I just seeMarc has already added "Cc: stable@vger.kernel.org", and he would take the patch in his tree, so I think no need to resend. Thanks, Zhu Lingshan >> >> >>>> >>>> Thanks >>>> >>>> >>>>> --- >>>>> virt/lib/irqbypass.c | 16 ++++++---------- >>>>> 1 file changed, 6 insertions(+), 10 deletions(-) >>>>> >>>>> diff --git a/virt/lib/irqbypass.c b/virt/lib/irqbypass.c >>>>> index c9bb3957f58a..28fda42e471b 100644 >>>>> --- a/virt/lib/irqbypass.c >>>>> +++ b/virt/lib/irqbypass.c >>>>> @@ -40,21 +40,17 @@ static int __connect(struct >>>>> irq_bypass_producer *prod, >>>>> if (prod->add_consumer) >>>>> ret = prod->add_consumer(prod, cons); >>>>> - if (ret) >>>>> - goto err_add_consumer; >>>>> - >>>>> - ret = cons->add_producer(cons, prod); >>>>> - if (ret) >>>>> - goto err_add_producer; >>>>> + if (!ret) { >>>>> + ret = cons->add_producer(cons, prod); >>>>> + if (ret && prod->del_consumer) >>>>> + prod->del_consumer(prod, cons); >>>>> + } >>>>> if (cons->start) >>>>> cons->start(cons); >>>>> if (prod->start) >>>>> prod->start(prod); >>>>> -err_add_producer: >>>>> - if (prod->del_consumer) >>>>> - prod->del_consumer(prod, cons); >>>>> -err_add_consumer: >>>>> + >>>>> return ret; >>>>> } >>>> >>> >> >
On Mon, 10 May 2021 09:32:54 +0100, "Zhu, Lingshan" <lingshan.zhu@intel.com> wrote: > > > > On 5/10/2021 3:09 PM, Zhu, Lingshan wrote: > > > > > > On 5/10/2021 12:34 PM, Jason Wang wrote: > >> > >> 在 2021/5/10 上午11:00, Zhu, Lingshan 写道: > >>> > >>> > >>> On 5/10/2021 10:43 AM, Jason Wang wrote: > >>>> > >>>> 在 2021/5/8 下午3:11, Zhu Lingshan 写道: > >>>>> This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88. > >>>>> > >>>>> The reverted commit may cause VM freeze on arm64 platform. > >>>>> Because on arm64 platform, stop a consumer will suspend the VM, > >>>>> the VM will freeze without a start consumer > >>>>> > >>>>> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> > >>>> > >>>> > >>>> Acked-by: Jason Wang <jasowang@redhat.com> > >>>> > >>>> Please resubmit with the formal process of stable > >>>> (stable-kernel-rules.rst). > >>> sure, I will re-submit it to stable kernel once it is merged into > >>> Linus tree. > >>> > >>> Thanks > >> > >> > >> I think it's better to resubmit (option 1), see how > >> stable-kernel-rules.rst said: > >> > >> "" > >> > >> :ref:`option_1` is **strongly** preferred, is the easiest and most > >> common. > >> :ref:`option_2` and :ref:`option_3` are more useful if the patch > >> isn't deemed > >> worthy at the time it is applied to a public git tree (for > >> instance, because > >> it deserves more regression testing first). > >> > >> """ > >> > >> Thanks > > OK, works for me, I will add cc stable, and resubmit it soon > > > > Thanks! > I just seeMarc has already added "Cc: stable@vger.kernel.org", and > he would take the patch in his tree, so I think no need to resend. That's fine, I can fix things up myself and queue the fix for -rc2. Thanks, M.
On 5/10/2021 6:00 PM, Marc Zyngier wrote: > On Mon, 10 May 2021 09:32:54 +0100, > "Zhu, Lingshan" <lingshan.zhu@intel.com> wrote: >> >> >> On 5/10/2021 3:09 PM, Zhu, Lingshan wrote: >>> >>> On 5/10/2021 12:34 PM, Jason Wang wrote: >>>> 在 2021/5/10 上午11:00, Zhu, Lingshan 写道: >>>>> >>>>> On 5/10/2021 10:43 AM, Jason Wang wrote: >>>>>> 在 2021/5/8 下午3:11, Zhu Lingshan 写道: >>>>>>> This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88. >>>>>>> >>>>>>> The reverted commit may cause VM freeze on arm64 platform. >>>>>>> Because on arm64 platform, stop a consumer will suspend the VM, >>>>>>> the VM will freeze without a start consumer >>>>>>> >>>>>>> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> >>>>>> >>>>>> Acked-by: Jason Wang <jasowang@redhat.com> >>>>>> >>>>>> Please resubmit with the formal process of stable >>>>>> (stable-kernel-rules.rst). >>>>> sure, I will re-submit it to stable kernel once it is merged into >>>>> Linus tree. >>>>> >>>>> Thanks >>>> >>>> I think it's better to resubmit (option 1), see how >>>> stable-kernel-rules.rst said: >>>> >>>> "" >>>> >>>> :ref:`option_1` is **strongly** preferred, is the easiest and most >>>> common. >>>> :ref:`option_2` and :ref:`option_3` are more useful if the patch >>>> isn't deemed >>>> worthy at the time it is applied to a public git tree (for >>>> instance, because >>>> it deserves more regression testing first). >>>> >>>> """ >>>> >>>> Thanks >>> OK, works for me, I will add cc stable, and resubmit it soon >>> >>> Thanks! >> I just seeMarc has already added "Cc: stable@vger.kernel.org", and >> he would take the patch in his tree, so I think no need to resend. > That's fine, I can fix things up myself and queue the fix for -rc2. Thanks Marc! > > Thanks, > > M. >
On Sat, 8 May 2021 15:11:52 +0800, Zhu Lingshan wrote: > This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88. > > The reverted commit may cause VM freeze on arm64 platform. > Because on arm64 platform, stop a consumer will suspend the VM, > the VM will freeze without a start consumer Applied to fixes, thanks! [1/1] Revert "irqbypass: do not start cons/prod when failed connect" commit: 0b1c0157b7b0d66d2d749ec950c7f8799d4a2e0e Cheers, M.
On Sat, May 08, 2021 at 03:11:52PM +0800, Zhu Lingshan wrote: > This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88. > > The reverted commit may cause VM freeze on arm64 platform. > Because on arm64 platform, stop a consumer will suspend the VM, > the VM will freeze without a start consumer > > Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> > --- > virt/lib/irqbypass.c | 16 ++++++---------- > 1 file changed, 6 insertions(+), 10 deletions(-) > > diff --git a/virt/lib/irqbypass.c b/virt/lib/irqbypass.c > index c9bb3957f58a..28fda42e471b 100644 > --- a/virt/lib/irqbypass.c > +++ b/virt/lib/irqbypass.c > @@ -40,21 +40,17 @@ static int __connect(struct irq_bypass_producer *prod, > if (prod->add_consumer) > ret = prod->add_consumer(prod, cons); > > - if (ret) > - goto err_add_consumer; > - > - ret = cons->add_producer(cons, prod); > - if (ret) > - goto err_add_producer; > + if (!ret) { > + ret = cons->add_producer(cons, prod); > + if (ret && prod->del_consumer) > + prod->del_consumer(prod, cons); > + } > > if (cons->start) > cons->start(cons); > if (prod->start) > prod->start(prod); > -err_add_producer: > - if (prod->del_consumer) > - prod->del_consumer(prod, cons); > -err_add_consumer: > + > return ret; > } > > -- > 2.27.0
diff --git a/virt/lib/irqbypass.c b/virt/lib/irqbypass.c index c9bb3957f58a..28fda42e471b 100644 --- a/virt/lib/irqbypass.c +++ b/virt/lib/irqbypass.c @@ -40,21 +40,17 @@ static int __connect(struct irq_bypass_producer *prod, if (prod->add_consumer) ret = prod->add_consumer(prod, cons); - if (ret) - goto err_add_consumer; - - ret = cons->add_producer(cons, prod); - if (ret) - goto err_add_producer; + if (!ret) { + ret = cons->add_producer(cons, prod); + if (ret && prod->del_consumer) + prod->del_consumer(prod, cons); + } if (cons->start) cons->start(cons); if (prod->start) prod->start(prod); -err_add_producer: - if (prod->del_consumer) - prod->del_consumer(prod, cons); -err_add_consumer: + return ret; }
This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88. The reverted commit may cause VM freeze on arm64 platform. Because on arm64 platform, stop a consumer will suspend the VM, the VM will freeze without a start consumer Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> --- virt/lib/irqbypass.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-)