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

Re: [Xen-devel] [PATCH] watchdog/xen: don't clear is_active when xen_wdt_stop() failed



>>> On 21.03.12 at 20:50, Wim Van Sebroeck <wim@xxxxxxxxx> wrote:
> Hi Jan,
> 
>> xen_wdt_release() shouldn't clear is_active even when the watchdog
>> didn't get stopped (which by itself shouldn't happen, but let's return
>> a proper error in this case rather than adding a BUG() upon hypercall
>> failure).
>> 
>> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>> 
>> ---
>>  drivers/watchdog/xen_wdt.c |    8 +++++---
>>  1 file changed, 5 insertions(+), 3 deletions(-)
>> 
>> --- 3.3/drivers/watchdog/xen_wdt.c
>> +++ 3.3-xen-watchdog-release/drivers/watchdog/xen_wdt.c
>> @@ -131,16 +131,18 @@ static int xen_wdt_open(struct inode *in
>>  
>>  static int xen_wdt_release(struct inode *inode, struct file *file)
>>  {
>> +    int err = 0;
>> +
>>      if (expect_release)
>> -            xen_wdt_stop();
>> +            err = xen_wdt_stop();
>>      else {
>>              printk(KERN_CRIT PFX
>>                     "unexpected close, not stopping watchdog!\n");
>>              xen_wdt_kick();
>>      }
>> -    is_active = false;
>> +    is_active = err;
>>      expect_release = false;
>> -    return 0;
>> +    return err;
>>  }
>>  
>>  static ssize_t xen_wdt_write(struct file *file, const char __user *data,
> 
> Just for my understanding:
> is_active is a bool value and err is an integer. What values are returned by 
> xen_wdt_stop?

xen_wdt_stop() returns the usual -errno values. Assignments from
non-bool to bool convert the value (non-zero -> true, zero -> false),
i.e. is_active gets set to false only if xen_wdt_stop() succeeded.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.