stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org,
	Cyrille Pitchen <cyrille.pitchen@atmel.com>,
	Ludovic Desroches <ludovic.desroches@atmel.com>,
	Wolfram Sang <wsa@the-dreams.de>
Subject: [PATCH 4.1 047/267] i2c: at91: fix a race condition when using the DMA controller
Date: Fri, 31 Jul 2015 12:38:18 -0700	[thread overview]
Message-ID: <20150731194003.407830561@linuxfoundation.org> (raw)
In-Reply-To: <20150731194001.933895871@linuxfoundation.org>

4.1-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Cyrille Pitchen <cyrille.pitchen@atmel.com>

commit 93563a6a71bb69dd324fc7354c60fb05f84aae6b upstream.

For TX transactions, the TXCOMP bit in the Status Register is cleared
when the first data is written into the Transmit Holding Register.

In the lines from at91_do_twi_transfer():
at91_twi_write_data_dma(dev);
at91_twi_write(dev, AT91_TWI_IER, AT91_TWI_TXCOMP);

the TXCOMP interrupt may be enabled before the DMA controller has
actually started to write into the THR. In such a case, the TXCOMP bit
is still set into the Status Register so the interrupt is triggered
immediately. The driver understands that a transaction completion has
occurred but this transaction hasn't started yet. Hence the TXCOMP
interrupt is no longer enabled by at91_do_twi_transfer() but instead
by at91_twi_write_data_dma_callback().

Also, the TXCOMP bit in the Status Register in not a clear on read flag
but a snapshot of the transmission state at the time the Status
Register is read.
When a NACK error is dectected by the I2C controller, the TXCOMP, NACK
and TXRDY bits are set together to 1 in the SR. If enabled, the TXCOMP
interrupt is triggered at the same time. Also setting the TXRDY to 1
triggers the DMA controller to write the next data into the THR. Such
a write resets the TXCOMP bit to 0 in the SR. So depending on when the
interrupt handler reads the SR, it may fail to detect the NACK error
if it relies on the TXCOMP bit. The NACK bit and its interrupt should
be used instead.

For RX transactions, the TXCOMP bit in the Status Register is cleared
when the START bit is set into the Control Register. However to unify
the management of the TXCOMP bit when the DMA controller is used, the
TXCOMP interrupt is now enabled by the DMA callbacks for both TX and
RX transfers.

Signed-off-by: Cyrille Pitchen <cyrille.pitchen@atmel.com>
Acked-by: Ludovic Desroches <ludovic.desroches@atmel.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/i2c/busses/i2c-at91.c |   70 +++++++++++++++++++++++++++++++-----------
 1 file changed, 53 insertions(+), 17 deletions(-)

--- a/drivers/i2c/busses/i2c-at91.c
+++ b/drivers/i2c/busses/i2c-at91.c
@@ -65,6 +65,9 @@
 #define	AT91_TWI_UNRE		0x0080	/* Underrun Error */
 #define	AT91_TWI_NACK		0x0100	/* Not Acknowledged */
 
+#define	AT91_TWI_INT_MASK \
+	(AT91_TWI_TXCOMP | AT91_TWI_RXRDY | AT91_TWI_TXRDY | AT91_TWI_NACK)
+
 #define	AT91_TWI_IER		0x0024	/* Interrupt Enable Register */
 #define	AT91_TWI_IDR		0x0028	/* Interrupt Disable Register */
 #define	AT91_TWI_IMR		0x002c	/* Interrupt Mask Register */
@@ -119,13 +122,12 @@ static void at91_twi_write(struct at91_t
 
 static void at91_disable_twi_interrupts(struct at91_twi_dev *dev)
 {
-	at91_twi_write(dev, AT91_TWI_IDR,
-		       AT91_TWI_TXCOMP | AT91_TWI_RXRDY | AT91_TWI_TXRDY);
+	at91_twi_write(dev, AT91_TWI_IDR, AT91_TWI_INT_MASK);
 }
 
 static void at91_twi_irq_save(struct at91_twi_dev *dev)
 {
-	dev->imr = at91_twi_read(dev, AT91_TWI_IMR) & 0x7;
+	dev->imr = at91_twi_read(dev, AT91_TWI_IMR) & AT91_TWI_INT_MASK;
 	at91_disable_twi_interrupts(dev);
 }
 
@@ -215,6 +217,14 @@ static void at91_twi_write_data_dma_call
 	dma_unmap_single(dev->dev, sg_dma_address(&dev->dma.sg),
 			 dev->buf_len, DMA_TO_DEVICE);
 
+	/*
+	 * When this callback is called, THR/TX FIFO is likely not to be empty
+	 * yet. So we have to wait for TXCOMP or NACK bits to be set into the
+	 * Status Register to be sure that the STOP bit has been sent and the
+	 * transfer is completed. The NACK interrupt has already been enabled,
+	 * we just have to enable TXCOMP one.
+	 */
+	at91_twi_write(dev, AT91_TWI_IER, AT91_TWI_TXCOMP);
 	at91_twi_write(dev, AT91_TWI_CR, AT91_TWI_STOP);
 }
 
@@ -309,7 +319,7 @@ static void at91_twi_read_data_dma_callb
 	/* The last two bytes have to be read without using dma */
 	dev->buf += dev->buf_len - 2;
 	dev->buf_len = 2;
-	at91_twi_write(dev, AT91_TWI_IER, AT91_TWI_RXRDY);
+	at91_twi_write(dev, AT91_TWI_IER, AT91_TWI_RXRDY | AT91_TWI_TXCOMP);
 }
 
 static void at91_twi_read_data_dma(struct at91_twi_dev *dev)
@@ -370,7 +380,7 @@ static irqreturn_t atmel_twi_interrupt(i
 	/* catch error flags */
 	dev->transfer_status |= status;
 
-	if (irqstatus & AT91_TWI_TXCOMP) {
+	if (irqstatus & (AT91_TWI_TXCOMP | AT91_TWI_NACK)) {
 		at91_disable_twi_interrupts(dev);
 		complete(&dev->cmd_complete);
 	}
@@ -384,6 +394,34 @@ static int at91_do_twi_transfer(struct a
 	unsigned long time_left;
 	bool has_unre_flag = dev->pdata->has_unre_flag;
 
+	/*
+	 * WARNING: the TXCOMP bit in the Status Register is NOT a clear on
+	 * read flag but shows the state of the transmission at the time the
+	 * Status Register is read. According to the programmer datasheet,
+	 * TXCOMP is set when both holding register and internal shifter are
+	 * empty and STOP condition has been sent.
+	 * Consequently, we should enable NACK interrupt rather than TXCOMP to
+	 * detect transmission failure.
+	 *
+	 * Besides, the TXCOMP bit is already set before the i2c transaction
+	 * has been started. For read transactions, this bit is cleared when
+	 * writing the START bit into the Control Register. So the
+	 * corresponding interrupt can safely be enabled just after.
+	 * However for write transactions managed by the CPU, we first write
+	 * into THR, so TXCOMP is cleared. Then we can safely enable TXCOMP
+	 * interrupt. If TXCOMP interrupt were enabled before writing into THR,
+	 * the interrupt handler would be called immediately and the i2c command
+	 * would be reported as completed.
+	 * Also when a write transaction is managed by the DMA controller,
+	 * enabling the TXCOMP interrupt in this function may lead to a race
+	 * condition since we don't know whether the TXCOMP interrupt is enabled
+	 * before or after the DMA has started to write into THR. So the TXCOMP
+	 * interrupt is enabled later by at91_twi_write_data_dma_callback().
+	 * Immediately after in that DMA callback, we still need to send the
+	 * STOP condition manually writing the corresponding bit into the
+	 * Control Register.
+	 */
+
 	dev_dbg(dev->dev, "transfer: %s %d bytes.\n",
 		(dev->msg->flags & I2C_M_RD) ? "read" : "write", dev->buf_len);
 
@@ -414,26 +452,24 @@ static int at91_do_twi_transfer(struct a
 		 * seems to be the best solution.
 		 */
 		if (dev->use_dma && (dev->buf_len > AT91_I2C_DMA_THRESHOLD)) {
+			at91_twi_write(dev, AT91_TWI_IER, AT91_TWI_NACK);
 			at91_twi_read_data_dma(dev);
-			/*
-			 * It is important to enable TXCOMP irq here because
-			 * doing it only when transferring the last two bytes
-			 * will mask NACK errors since TXCOMP is set when a
-			 * NACK occurs.
-			 */
-			at91_twi_write(dev, AT91_TWI_IER,
-			       AT91_TWI_TXCOMP);
-		} else
+		} else {
 			at91_twi_write(dev, AT91_TWI_IER,
-			       AT91_TWI_TXCOMP | AT91_TWI_RXRDY);
+				       AT91_TWI_TXCOMP |
+				       AT91_TWI_NACK |
+				       AT91_TWI_RXRDY);
+		}
 	} else {
 		if (dev->use_dma && (dev->buf_len > AT91_I2C_DMA_THRESHOLD)) {
+			at91_twi_write(dev, AT91_TWI_IER, AT91_TWI_NACK);
 			at91_twi_write_data_dma(dev);
-			at91_twi_write(dev, AT91_TWI_IER, AT91_TWI_TXCOMP);
 		} else {
 			at91_twi_write_next_byte(dev);
 			at91_twi_write(dev, AT91_TWI_IER,
-				AT91_TWI_TXCOMP | AT91_TWI_TXRDY);
+				       AT91_TWI_TXCOMP |
+				       AT91_TWI_NACK |
+				       AT91_TWI_TXRDY);
 		}
 	}
 



  parent reply	other threads:[~2015-07-31 19:38 UTC|newest]

Thread overview: 259+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-31 19:37 [PATCH 4.1 000/267] 4.1.4-stable review Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 003/267] pinctrl: mvebu: armada-370: fix spi0 pin description Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 004/267] pinctrl: mvebu: armada-375: remove incorrect space in " Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 005/267] pinctrl: mvebu: armada-375: remove non-existing NAND re/we pins Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 006/267] pinctrl: mvebu: armada-38x: fix PCIe functions Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 007/267] pinctrl: mvebu: armada-38x: fix incorrect total number of GPIOs Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 008/267] pinctrl: mvebu: armada-39x: " Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 009/267] pinctrl: mvebu: armada-xp: remove non-existing NAND pins Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 010/267] pinctrl: mvebu: armada-xp: remove non-existing VDD cpu_pd functions Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 011/267] pinctrl: mvebu: armada-xp: fix functions of MPP48 Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 012/267] openrisc: fix CONFIG_UID16 setting Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 013/267] m68knommu: make ColdFire SoC selection a choice Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 014/267] m68knommu: force setting of CONFIG_CLOCK_FREQ for ColdFire Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 015/267] Bluetooth: Fix race condition with user channel and setup stage Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 016/267] Bluetooth: btusb: Fix memory leak in Intel setup routine Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 017/267] Bluetooth: btusb: Fix secure send command length alignment on Intel 8260 Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 018/267] Bluetooth: btusb: Correct typo in Roper Class 1 Bluetooth Dongle Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 019/267] Bluetooth: btbcm: allow btbcm_read_verbose_config to fail on Apple Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 020/267] ath9k: fix DMA stop sequence for AR9003+ Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 021/267] ath9k_htc: memory corruption calling set_bit() Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 022/267] rtlwifi: Remove the clear interrupt routine from all drivers Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 023/267] ieee802154: Fix sockaddr_ieee802154 implicit padding information leak Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 024/267] staging: vt6656: check ieee80211_bss_conf bssid not NULL Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 025/267] staging: vt6655: " Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 026/267] staging: vt6655: device_rx_srv check sk_buff is NULL Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 027/267] staging: rtl8712: prevent buffer overrun in recvbuf2recvframe Greg Kroah-Hartman
2015-07-31 19:37 ` [PATCH 4.1 028/267] staging: comedi: cb_pcimdas: fix handlers for DI and DO subdevices Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 029/267] hid-sensor: Fix suspend/resume delay Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 030/267] ext4: fix race between truncate and __ext4_journalled_writepage() Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 031/267] ext4: call sync_blockdev() before invalidate_bdev() in put_super() Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 032/267] ext4: dont retry file block mapping on bigalloc fs with non-extent file Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 033/267] ext4: set lazytime on remount if MS_LAZYTIME is set by mount Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 034/267] ext4: fix fencepost error in lazytime optimization Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 035/267] bufferhead: Add _gfp version for sb_getblk() Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 036/267] ext4: avoid deadlocks in the writeback path by using sb_getblk_gfp Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 037/267] ext4: fix reservation release on invalidatepage for delalloc fs Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 038/267] ext4: be more strict when migrating to non-extent based file Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 039/267] ext4: correctly migrate a file with a hole at the beginning Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 040/267] ext4: replace open coded nofail allocation in ext4_free_blocks() Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 041/267] jbd2: use GFP_NOFS in jbd2_cleanup_journal_tail() Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 042/267] jbd2: fix ocfs2 corrupt when updating journal superblock fails Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 043/267] NFC: st21nfcb: Remove inappropriate kfree on a devm_kzalloc pointer Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 044/267] NFC: st21nfcb: Do not remove header once the payload is sent Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 045/267] NFC: st21nfcb: remove st21nfcb_nci_i2c_disable Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 046/267] rtc: snvs: fix wakealarm by call enable_irq_wake earlier Greg Kroah-Hartman
2015-07-31 19:38 ` Greg Kroah-Hartman [this message]
2015-07-31 19:38 ` [PATCH 4.1 051/267] iio:light:cm3323: clear bitmask before set Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 052/267] iio:adc:cc10001_adc: fix Kconfig dependency Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 053/267] iio:accel:bmc150-accel: fix counting direction Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 054/267] iio: light: tcs3414: Fix bug preventing to set integration time Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 055/267] iio: DAC: ad5624r_spi: fix bit shift of output data value Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 056/267] iio: inv-mpu: Specify the expected format/precision for write channels Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 057/267] iio: tmp006: Check channel info on write Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 058/267] iio: twl4030-madc: Pass the IRQF_ONESHOT flag Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 059/267] iio: ABI: Clarify proximity output value Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 060/267] iio: proximity: sx9500: Fix proximity value Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 061/267] iio: adc: rockchip_saradc: add missing MODULE_* data Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 062/267] iio: adc: at91_adc: allow to use full range of startup time Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 063/267] [media] vb2: Dont WARN when v4l2_buffer.bytesused is 0 for multiplanar buffers Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 064/267] [media] media: Fix regression in some more dib0700 based devices Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 066/267] [media] cx18: add missing caps for the PCM video device Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 067/267] [media] cx24117: fix a buffer overflow when checking userspace params Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 068/267] [media] af9013: Dont accept invalid bandwidth Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 069/267] [media] saa7164: fix querycap warning Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 070/267] [media] s5h1420: fix a buffer overflow when checking userspace params Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 071/267] [media] cx24116: " Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 072/267] ASoC: arizona: Fix noise generator gain TLV Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 073/267] ASoC: rt5645: Init jack_detect_work before registering irq Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 074/267] ASoC: max98925: Fix mask for setting DAI invert mode Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 075/267] ASoC: qcom: remove incorrect dependencies Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 076/267] ASoC: imx-wm8962: Add a missing error check Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 077/267] ASoC: omap: fix up SND_OMAP_SOC_OMAP_ABE_TWL6040 dependency, again Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 079/267] ASoC: wm8955: Fix setting wrong register for WM8955_K_8_0_MASK bits Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 081/267] ASoC: wm8960: the enum of "DAC Polarity" should be wm8960_enum[1] Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 082/267] ASoC: tas2552: Fix kernel crash when the codec is loaded but not part of a card Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 083/267] ASoC: tas2552: Fix kernel crash caused by wrong kcontrol entry Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 084/267] libata: Do not blacklist Micron M500DC Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 085/267] libata: add ATA_HORKAGE_BROKEN_FPDMA_AA quirk for HP 250GB SATA disk VB0250EAVER Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 086/267] libata: increase the timeout when setting transfer mode Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 087/267] libata: Fall back to unqueued READ LOG EXT if the DMA variant fails Greg Kroah-Hartman
2015-07-31 19:38 ` [PATCH 4.1 088/267] libata: Expose TRIM capability in sysfs Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 089/267] libata: add ATA_HORKAGE_NOTRIM Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 090/267] libata: add ATA_HORKAGE_MAX_SEC_1024 to revert back to previous max_sectors limit Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 091/267] libata: Do not blacklist M510DC Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 092/267] libata: force disable trim for SuperSSpeed S238 Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 093/267] usb: dwc3: gadget: return error if command sent to DGCMD register fails Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 094/267] usb: dwc3: gadget: return error if command sent to DEPCMD " Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 095/267] usb: dwc3: gadget: dont clear EP_BUSY too early Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 096/267] usb: dwc3: Reset the transfer resource index on SET_INTERFACE Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 097/267] usb: core: Fix USB 3.0 devices lost in NOTATTACHED state after a hub port reset Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 098/267] USB: devio: fix a condition in async_completed() Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 099/267] phy: twl4030-usb: remove incorrect pm_runtime_get_sync() in probe function Greg Kroah-Hartman
2015-08-08  5:53   ` Alexander Holler
2015-08-08  6:48     ` Kishon Vijay Abraham I
2015-08-09  9:00       ` NeilBrown
2015-08-09 10:45         ` Alexander Holler
2015-08-11  8:29           ` NeilBrown
2015-08-11 21:34             ` Alexander Holler
2015-08-11 22:09               ` NeilBrown
2015-08-12  0:29                 ` Felipe Balbi
2015-07-31 19:39 ` [PATCH 4.1 100/267] usb: phy: mxs: suspend to RAM causes NULL pointer dereference Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 101/267] phy: berlin-usb: fix divider for BG2CD Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 102/267] usb: gadget: composite: Fix NULL pointer dereference Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 103/267] usb: gadget: f_fs: do not set cancel function on synchronous {read,write} Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 104/267] usb: gadget: mv_udc_core: fix phy_regs I/O memory leak Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 105/267] usb: f_mass_storage: limit number of reported LUNs Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 106/267] usb: musb: host: rely on port_mode to call musb_start() Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 107/267] USB: cp210x: add ID for Aruba Networks controllers Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 108/267] USB: option: add 2020:4000 ID Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 109/267] USB: serial: Destroy serial_minors IDR on module exit Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 110/267] USB: OHCI: Fix race between ED unlink and URB submission Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 111/267] usb: core: lpm: set lpm_capable for root hub device Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 112/267] usb: xhci: Bugfix for NULL pointer deference in xhci_endpoint_init() function Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 113/267] dm cache: fix race when issuing a POLICY_REPLACE operation Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 114/267] dm stats: fix divide by zero if number_of_areas arg is zero Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 115/267] dm space map metadata: fix occasional leak of a metadata block on resize Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 116/267] dm btree remove: fix bug in redistribute3 Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 117/267] dm thin: allocate the cell_sort_array dynamically Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 118/267] dm btree: silence lockdep lock inversion in dm_btree_del() Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 119/267] mmc: block: Add missing mmc_blk_put() in power_ro_lock_show() Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 120/267] block: loop: convert to per-device workqueue Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 121/267] block: loop: avoiding too many pending per work I/O Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 122/267] block: Do a full clone when splitting discard bios Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 123/267] ARM: at91/dt: sama5d4ek: mci0 uses slot 0 Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 124/267] ARM: at91/dt: sama5d4: fix dma conf for aes, sha and tdes nodes Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 126/267] ARM: at91/dt: trivial: fix USB udc compatible string Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 127/267] ARM: at91/dt: update udc compatible strings Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 128/267] bus: arm-ccn: Fix node->XP config conversion Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 129/267] drm/vgem: Set unique to "vgem" Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 130/267] drm/dp/mst: close deadlock in connector destruction Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 131/267] drm/dp/mst: take lock around looking up the branch device on hpd irq Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 132/267] drm/dp/mst: make sure mst_primary mstb is valid in work function Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 133/267] drm/tegra: dpaux: Fix transfers larger than 4 bytes Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 134/267] drm/qxl: Do not cause spice-server to clean our objects Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 135/267] drm/qxl: Do not leak memory if qxl_release_list_add fails Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 137/267] drm/atomic: fix out of bounds read in for_each_*_in_state helpers Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 138/267] drm/radeon: take the mode_config mutex when dealing with hpds (v2) Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 139/267] drm/radeon: clean up radeon_audio_enable Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 140/267] drm/i915/ppgtt: Break loop in gen8_ppgtt_clear_range failure path Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 143/267] drm/i915: Declare the swizzling unknown for L-shaped configurations Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 144/267] drm/i915: Snapshot seqno of most recently submitted request Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 145/267] drm/i915: Forward all core DRM ioctls to core compat handling Greg Kroah-Hartman
2015-07-31 19:39 ` [PATCH 4.1 146/267] Revert "drm/i915: Declare the swizzling unknown for L-shaped configurations" Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 150/267] Revert "drm/radeon: dont switch vt on suspend" Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 151/267] drm/radeon: only check the sink type on DP connectors Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 157/267] drm/radeon: add a dpm quirk for Sapphire Radeon R9 270X 2GB GDDR5 Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 159/267] drm/radeon/ci: silence a harmless PCC warning Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 160/267] drm/rockchip: use drm_gem_mmap helpers Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 161/267] drm: add a check for x/y in drm_mode_setcrtc Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 162/267] drm: Provide compat ioctl for addfb2.1 Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 164/267] libata: Fix regression when the NCQ Send and Receive log page is absent Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 165/267] xfs: fix remote symlinks on V5/CRC filesystems Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 166/267] xfs: dont truncate attribute extents if no extents exist Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 167/267] w1_therm reference count family data Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 168/267] tpm, tpm_crb: fix le64_to_cpu conversions in crb_acpi_add() Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 169/267] vTPM: set virtual device before passing to ibmvtpm_reset_crq Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 170/267] tpm: Fix initialization of the cdev Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 171/267] tpm, tpm_crb: fail when TPM2 ACPI table contents look corrupted Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 172/267] KEYS: fix "ca_keys=" partial key matching Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 173/267] KEYS: ensure we free the assoc array edit if edit is valid Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 174/267] ima: skip measurement of cgroupfs files and update documentation Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 175/267] ima: cleanup ima_init_policy() a little Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 176/267] ima: do not measure or appraise the NSFS filesystem Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 177/267] evm: labeling pseudo filesystems exception Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 178/267] ima: fix ima_show_template_data_ascii() Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 179/267] ima: add support for new "euid" policy condition Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 180/267] ima: extend "mask" policy matching support Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 181/267] ima: update builtin policies Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 182/267] tracing/filter: Do not WARN on operand count going below zero Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 183/267] tracing/filter: Do not allow infix to exceed end of string Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 184/267] tracing: Fix typo from "static inlin" to "static inline" Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 185/267] tracing: Have branch tracer use recursive field of task struct Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 186/267] tracing: Fix sample output of dynamic arrays Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 187/267] dmaengine: mv_xor: bug fix for racing condition in descriptors cleanup Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 188/267] md: clear mddev->private when it has been freed Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 189/267] md: unlock mddev_lock on an error path Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 190/267] md: Skip cluster setup for dm-raid Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 191/267] hwmon: (mcp3021) Fix broken output scaling Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 192/267] hwmon: (nct7802) fix visibility of temp3 Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 193/267] ARM: dts: mx23: fix iio-hwmon support Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 194/267] Btrfs: dont invalidate root dentry when subvolume deletion fails Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 195/267] md: fix a build warning Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 196/267] Btrfs: use kmem_cache_free when freeing entry in inode cache Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 197/267] Btrfs: fix race between caching kthread and returning inode to " Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 198/267] Btrfs: fix fsync data loss after append write Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 199/267] Btrfs: fix memory leak in the extent_same ioctl Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 200/267] Btrfs: fix list transaction->pending_ordered corruption Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 201/267] Btrfs: fix file corruption after cloning inline extents Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 202/267] selinux: dont waste ebitmap space when importing NetLabel categories Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 203/267] selinux: fix mprotect PROT_EXEC regression caused by mm change Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 204/267] fuse: initialize fc->release before calling it Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 205/267] crush: fix a bug in tree bucket decode Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 206/267] ACPI / resources: free memory on error in add_region_before() Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 207/267] ACPI / PNP: Reserve ACPI resources at the fs_initcall_sync stage Greg Kroah-Hartman
2015-07-31 19:40 ` [PATCH 4.1 208/267] ACPI / LPSS: Fix up acpi_lpss_create_device() Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 209/267] ACPICA: Tables: Enable both 32-bit and 64-bit FACS Greg Kroah-Hartman
2015-07-31 20:25   ` Moore, Robert
2015-07-31 20:33     ` Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 210/267] ACPICA: Tables: Fix an issue that FACS initialization is performed twice Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 211/267] ACPICA: Tables: Enable default 64-bit FADT addresses favor Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 212/267] ACPI / PCI: Fix regressions caused by resource_size_t overflow with 32-bit kernel Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 213/267] serial: samsung: only use earlycon for console Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 214/267] mmc: card: Fixup request missing in mmc_blk_issue_rw_rq Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 215/267] mmc: sdhci: Restore behavior while creating OCR mask Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 216/267] PM / clk: Fix clock error check in __pm_clk_add() Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 217/267] RDMA/ocrdma: fix double free on pd Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 218/267] tty: remove platform_sysrq_reset_seq Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 219/267] mm/hugetlb: introduce minimum hugepage order Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 220/267] PM / sleep: Increase default DPM watchdog timeout to 60 Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 221/267] firmware: dmi_scan: Only honor end-of-table for 64-bit tables Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 222/267] compiler-intel: fix wrong compiler barrier() macro Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 223/267] __bitmap_parselist: fix bug in empty string handling Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 224/267] security_syslog() should be called once only Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 225/267] mac80211: fix the beacon csa counter for mesh and ibss Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 226/267] iwlwifi: mvm: fix ROC reference accounting Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 227/267] cfg80211: ignore netif running state when changing iftype Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 228/267] mac80211: prevent possible crypto tx tailroom corruption Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 229/267] e1000e: Cleanup handling of VLAN_HLEN as a part of max frame size Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 230/267] clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 231/267] ideapad_laptop: Lenovo G50-30 fix rfkill reports wireless blocked Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 232/267] ideapad: fix software rfkill setting Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 233/267] of/address: use atomic allocation in pci_register_io_range() Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 235/267] ovl: lookup whiteouts outside iterate_dir() Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 236/267] of: return NUMA_NO_NODE from fallback of_node_to_nid() Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 239/267] clk: Fix JSON output in debugfs Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 240/267] clk: ti: dra7-atl-clock: Fix possible ERR_PTR dereference Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 241/267] clk: qcom: Use parent rate when set rate to pixel RCG clock Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 242/267] pNFS: Fix a memory leak when attempted pnfs fails Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 243/267] pNFS/flexfiles: Fix the reset of struct pgio_header when resending Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 244/267] NFS: Fix size of NFSACL SETACL operations Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 245/267] fixing infinite OPEN loop in 4.0 stateid recovery Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 246/267] nfs: increase size of EXCHANGE_ID name string buffer Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 247/267] NFS: Ensure we set NFS_CONTEXT_RESEND_WRITES when requeuing writes Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 248/267] nfs: fix potential credential leak in ff_layout_update_mirror_cred Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 249/267] nfs: always update creds in mirror, even when we have an already connected ds Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 250/267] SUNRPC: Fix a memory leak in the backchannel code Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 251/267] 9p: forgetting to cancel request on interrupted zero-copy RPC Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 252/267] 9p: dont leave a half-initialized inode sitting around Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 253/267] rbd: use GFP_NOIO in rbd_obj_request_create() Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 254/267] agp/intel: Fix typo in needs_ilk_vtd_wa() Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 255/267] ARM: dove: fix legacy dove IRQ numbers Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 256/267] EDAC, octeon: Fix broken build due to model helper renames Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 257/267] p9_client_write(): avoid double p9_free_req() Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 258/267] ARM64: smp: Fix suspicious RCU usage with ipi tracepoints Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 259/267] arm64: bpf: fix out-of-bounds read in bpf2a64_offset() Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 260/267] arm64: bpf: fix endianness conversion bugs Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 261/267] arm64: Dont report clear pmds and puds as huge Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 262/267] perf bench numa: Fix to show proper convergence stats Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 263/267] ARM: 8393/1: smp: Fix suspicious RCU usage with ipi tracepoints Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 264/267] ARM: 8397/1: fix vdsomunge not to depend on glibc specific error.h Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 265/267] hpfs: kstrdup() out of memory handling Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 266/267] hpfs: hpfs_error: Remove static buffer, use vsprintf extension %pV instead Greg Kroah-Hartman
2015-07-31 19:41 ` [PATCH 4.1 267/267] Fix firmware loader uevent buffer NULL pointer dereference Greg Kroah-Hartman
2015-08-01  2:09 ` [PATCH 4.1 000/267] 4.1.4-stable review Guenter Roeck
2015-08-03 16:16   ` Greg Kroah-Hartman
2015-08-01  6:01 ` Sudip Mukherjee
2015-08-03 16:17   ` Greg Kroah-Hartman
2015-08-03 18:30 ` Shuah Khan
2015-08-03 21:12   ` Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150731194003.407830561@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=cyrille.pitchen@atmel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ludovic.desroches@atmel.com \
    --cc=stable@vger.kernel.org \
    --cc=wsa@the-dreams.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).