Search Linux Wireless

Re: [linux-nfc] [ PATCH v5 2/3] driver: nfc: Add ST95HF NFC Transceiver support

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

 



On Mon, Dec 21, 2015 at 11:45:35PM +0100, Samuel Ortiz wrote:
> Hi Shikha,
> 
> On Mon, Dec 21, 2015 at 07:57:23PM +0800, Shikha SINGH wrote:
> > Hello Samuel,
> > 	Please see my answer below.
> > 	
> > >This looks a lot better than the initial version.
> > >I only have one question:
> > >
> > >On Fri, Nov 20, 2015 at 06:40:20AM -0500, Shikha Singh wrote:
> > >> +/*
> > >> + * st95hf_send_recv_cmd() is for sending commands to ST95HF
> > >> + * that are described in the cmd_array[]. It can optionally
> > >> + * receive the response if the cmd request is of type
> > >> + * SYNC. For that to happen caller must pass true to recv_res.
> > >> + * For ASYNC request, recv_res is ignored and the
> > >> + * function will never try to receive the response on behalf
> > >> + * of the caller.
> > >> + */
> > >> +static int st95hf_send_recv_cmd(struct st95hf_context *st95context,
> > >> +				enum st95hf_cmd_list cmd,
> > >> +				int no_modif,
> > >> +				struct param_list *list_array,
> > >> +				bool recv_res)
> > >> +{
> > >> +	unsigned char spi_cmd_buffer[MAX_CMD_LEN];
> > >> +	int i, ret;
> > >> +	struct device *dev = &st95context->spicontext.spidev->dev;
> > >How do you know this driver is still valid at that point ?
> > >It seems to be a potential corner case against the driver's remove function, but
> > >it seems to be a race nevertheless.
> > 
> > st95hf_send_recv_cmd() is a static function that can be called only when a NFC digital request is submitted to our driver.
> > So in summary, it can be called either from an implemented NFC digital ops (such as st95hf_switch_rf()) or from the driver's threaded ISR.
> > Now if we see the remove function of the driver i.e. st95hf_remove(), it waits for all the outstanding NFC digital request to finish via nfc_digital_unregister_device(stcontext->ddev).
> >
> Yes, that was my main concern but I forgot
> nfc_digital_unregister_device() waits for its command workqueue to be
> emptied before returning. So we're safe.
> 
> All 3 patches applied to nfc-next, thanks.
Just a side note: I removed the 2 calls you had in your driver to BUG()
and replaced them with WARN() calls.
BUG() is really meant for unrecoverable system errors as it crashes the
machine. I don't think an NFC driver should call it.

Cheers,
Samuel.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux