Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752348AbbD3Rzr (ORCPT ); Thu, 30 Apr 2015 13:55:47 -0400 Received: from mail-la0-f49.google.com ([209.85.215.49]:33468 "EHLO mail-la0-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752022AbbD3Rzp (ORCPT ); Thu, 30 Apr 2015 13:55:45 -0400 MIME-Version: 1.0 In-Reply-To: References: <20150415131906.GC21491@kroah.com> <20150417134924.GB19794@kroah.com> <20150417143640.GB3671@codeblueprint.co.uk> <20150420144323.GA7261@kroah.com> <20150421075620.GA11000@kroah.com> <1429665679.2207.44.camel@HansenPartnership.com> <20150422132734.GB12062@redhat.com> <1429715913.2195.22.camel@HansenPartnership.com> <1429798187.2170.3.camel@HansenPartnership.com> <1429888575.2182.20.camel@HansenPartnership.com> <1430174136.2314.49.camel@HansenPartnership.com> <1430175112.2314.56.camel@HansenPartnership.com> From: Andy Lutomirski Date: Thu, 30 Apr 2015 10:55:22 -0700 Message-ID: Subject: Re: [PATCH v4 2/2] efi: an sysfs interface for user to update efi firmware To: "Kweh, Hock Leong" Cc: James Bottomley , Peter Jones , Greg Kroah-Hartman , Matt Fleming , Ming Lei , "Ong, Boon Leong" , LKML , "linux-efi@vger.kernel.org" , Sam Protsenko , Roy Franz , Borislav Petkov , Al Viro , Linux FS Devel Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3350 Lines: 89 On Thu, Apr 30, 2015 at 2:17 AM, Kweh, Hock Leong wrote: >> -----Original Message----- >> From: Andy Lutomirski [mailto:luto@amacapital.net] >> Sent: Thursday, April 30, 2015 2:41 AM >> >> On Wed, Apr 29, 2015 at 4:23 AM, Kweh, Hock Leong >> wrote: >> > >> > Dear communities, >> > >> > I agree with James. Due to different people may have different needs. >> > But from our side, we would just like to have a simple interface for >> > us to upload the efi capsule and perform update. We do not have any >> > use case or need to get info from QueryCapsuleUpdate(). Let me give a >> suggestion here: >> > please allow me to focus on deliver this simple loading interface and >> > upstream it. Then later whoever has the actual use case or needs on >> > the ioctl implementation, he or she could enhance base on this simple >> loading interface. >> > What do you guys think? >> > >> > Let me summarize the latest design idea: >> > - No longer leverage on firmware class but use misc device >> > - Do not use platform device but use device_create() >> > - User just need to perform "cat file.bin > /sys/.../capsule_loader" >> > in the shell >> >> If you do this, there's no need for the misc device. > > I do this so that in the future when someone want to implement the > Ioctl(), he or she can base on this and expand it. > >> >> > - File operation functions include: open(), read(), write() and >> > flush() >> > - Perform mutex lock in open() then release the mutex in flush() for >> avoiding >> > race condition / concurrent loading >> >> Make sure the mutex operation is killable, then, and maybe even >> interruptable. > > Okay. > >> >> > - Perform the capsule update and error return at flush() function >> > >> > Is there anything I missed? Any one still have concern with this idea? >> > Thanks for providing the ideas as well as the review. >> > >> >> If it works (and cat really does fail reliably), then it seems okay to me. >> >> However, since I like pulling increasing numbers of my hats, someone should >> verify that the common embedded cat implementations are also okay with >> this. For example, I haven't yet found any code in busybox's cat >> implementation that closes stdout. >> >> Given that the main targets of this (for now, at least) are embedded, this >> might be a problem. >> > > I think we shouldn't focus on the cat implementation for the close issue. > > My understanding about this action: > cat file.bin > /sys/..../capsule_loader > It is actually the ">" (IO redirection) who perform the open write & close > to this "/sys/..../capsule_loader" file note and not the "cat" do it. > So, I think your answer can be found at Shell source code. The shell opens capsule_loader and then execs the command. If you type: (cat file.bin) >/sys/.../captule_loader, then the command is a subshell and the subshell will close the file. (cat might also close it, but there will be two references.) If you type: cat file.bin >/sys/.../capsule_loader then the shell doesn't retain a reference to the file at all. --Andy -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/