lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 6 Nov 2014 08:52:13 -0800
From:	Andy Lutomirski <luto@...capital.net>
To:	Kweh Hock Leong <hock.leong.kweh@...el.com>
Cc:	Sam Protsenko <semen.protsenko@...aro.org>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	Greg KH <gregkh@...uxfoundation.org>,
	"Fleming, Matt" <matt.fleming@...el.com>,
	"Ong, Boon Leong" <boon.leong.ong@...el.com>,
	Ming Lei <ming.lei@...onical.com>,
	"linux-efi@...r.kernel.org" <linux-efi@...r.kernel.org>
Subject: RE: [PATCH v2 3/3] efi: Capsule update with user helper interface

On Nov 6, 2014 4:56 AM, "Kweh, Hock Leong" <hock.leong.kweh@...el.com> wrote:
>
> > -----Original Message-----
> > From: Andy Lutomirski [mailto:luto@...capital.net]
> > Sent: Wednesday, November 05, 2014 12:36 AM
> >
> > Am I missing something here?  The current proposal is missing the
> > success/failure part, unless you count the loaded count (in a different sysfs
> > directory) as a useful interface for that.
>
> Here is my sample shell script which allow me to do multi capsule binaries upload
> and obtain error message if error occur:
>
> #!/bin/sh
>
> old=$(cat /sys/devices/platform/efi_capsule_user_helper/capsule_loaded)
>
> for arg in "$@"
> do
>         if [ -f $arg ]
>         then
>                 echo 1 > /sys/class/firmware/efi-capsule-file/loading
>                 cat $arg > /sys/class/firmware/efi-capsule-file/data
>                 echo 0 > /sys/class/firmware/efi-capsule-file/loading

I think you have a race.  Try putting msleep(1000) after the
request_firmware_nowait call, and I bet this will fail on the second
try.

>
>                 oldtime=$(date +%S)
>                 oldtime=$(((time + 2) % 60))
>                 until [ -f /sys/class/firmware/efi-capsule-file/loading ]
>                 do
>                         newtime=$(date +%S)
>                         if [ $newtime -eq $oldtime ]
>                         then
>                                 break
>                         fi
>                 done
>
>                 old=$((old + 1))
>                 new=$(cat /sys/devices/platform/efi_capsule_user_helper/capsule_loaded)

I think that firmware_class doesn't call the callback until after
loading is closed for the second time.  If so, then this is racy.  Try
inserting msleep(1000) at the beginning of your callback and uploading
a capsule that should load successfully -- this will report failure,
but a future upload may get very confused.  Also, what does the
firmware class do when simultaneous uploads of the same file with
different contents are in flight?  Is that possible?


--Andy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ