linux-uconsole/drivers
Chia-chi Yeh 764fc0ee29 net: PPPoPNS and PPPoLAC fixes.
net: Fix a bitmask in PPPoPNS and rename constants in PPPoPNS and PPPoLAC.

Signed-off-by: Chia-chi Yeh <chiachi@android.com>

net: Fix a potential deadlock while releasing PPPoLAC/PPPoPNS socket.

PPP driver guarantees that no thread will be executing start_xmit() after
returning from ppp_unregister_channel(). To achieve this, a spinlock (downl)
is used. In pppolac_release(), ppp_unregister_channel() is called after sk_udp
is locked. At the same time, another thread might be running in pppolac_xmit()
with downl. Thus a deadlock will occur if the thread tries to lock sk_udp.
The same situation might happen on sk_raw in pppopns_release().

Signed-off-by: Chia-chi Yeh <chiachi@android.com>

net: Force PPPoLAC and PPPoPNS to bind an interface before creating PPP channel.

It is common to manipulate the routing table after configuring PPP device.
Since both PPPoLAC and PPPoPNS run over IP, care must be taken to make sure
that there is no loop in the routing table.
Although this can be done by adding a host route, it might still cause
problems when the interface is down for some reason.

To solve this, this patch forces both drivers to bind an interface before
creating PPP channel, so the system will not re-route the tunneling sockets
to another interface when the original one is down. Another benefit is that
now the host route is no longer required, so there is no need to remove it
when PPP channel is closed.

Signed-off-by: Chia-chi Yeh <chiachi@android.com>

net: Avoid sleep-inside-spinlock in PPPoLAC and PPPoPNS.

Since recv() and xmit() are called with a spinlock held, routines which might
sleep cannot be used. This issue is solved by following changes:

Incoming packets are now processed in backlog handler, recv_core(), instead of
recv(). Since backlog handler is always executed with socket spinlock held, the
requirement of ppp_input() is still satisfied.

Outgoing packets are now processed in workqueue handler, xmit_core(), instead of
xmit(). Note that kernel_sendmsg() is no longer used to prevent touching dead
sockets.

In release(), lock_sock() and pppox_unbind_sock() ensure that no thread is in
recv_core() or xmit(). Then socket handlers are restored before release_sock(),
so no packets will leak in backlog queue.

Signed-off-by: Chia-chi Yeh <chiachi@android.com>

net: Fix msg_iovlen in PPPoLAC and PPPoPNS.

Although any positive value should work (which is always true in both drivers),
the correct value should be 1.

Signed-off-by: Chia-chi Yeh <chiachi@android.com>
2011-06-14 09:09:14 -07:00
..
accessibility
acpi Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2011-05-29 11:19:16 -07:00
amba ARM: 6829/1: amba: make hardcoded periphid override hardware 2011-05-26 10:33:34 +01:00
ata libata: fix unexpectedly frozen port after ata_eh_reset() 2011-06-07 15:55:55 -04:00
atm
auxdisplay
base PM / Runtime: Fix loops in pm_runtime_clk_notify() 2011-06-07 23:34:58 +02:00
bcma drivers/bcma/host_pci.c needs slab.h 2011-05-26 17:12:32 -07:00
block Merge branch 'for-linus' of git://git.kernel.dk/linux-block 2011-06-04 08:11:26 +09:00
bluetooth Revert "tty: make receive_buf() return the amout of bytes received" 2011-06-04 06:33:24 +09:00
cdrom block: fix mismerge of the DISK_EVENT_MEDIA_CHANGE removal 2011-06-02 05:29:19 +09:00
char Make /dev/mem configurable, as we don't want it. 2011-06-14 09:08:40 -07:00
clk
clocksource Revert "clocksource: sh_cmt: Runtime PM support" 2011-05-31 15:26:42 +09:00
connector
cpufreq cpufreq: make DB8500 cpufreq driver compile 2011-05-24 22:20:14 +02:00
cpuidle Merge branch 'idle-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6 2011-05-29 11:18:09 -07:00
crypto [S390] ap: skip device registration on type probe failure 2011-05-23 10:24:29 +02:00
dca
dio
dma dmaengine: shdma: fix a regression: initialise DMA channels for memcpy 2011-06-02 14:40:43 +09:00
edac edac,rcu: use synchronize_rcu() instead of call_rcu()+rcu_barrier() 2011-05-26 17:12:37 -07:00
eisa
firewire
firmware iscsi_ibft: iscsi_ibft_find unused variable i 2011-06-09 09:05:12 -04:00
gpio gpio/nomadik: fix sleepmode for elder Nomadik 2011-06-09 15:03:38 -06:00
gpu drm/radeon/kms: disable hdmi audio by default 2011-06-08 20:14:41 +10:00
hid Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 2011-05-23 12:33:02 -07:00
hwmon hwmon: (max6642): Better chip detection schema 2011-06-04 10:34:28 -07:00
hwspinlock
i2c mfd: Use mfd cell platform_data for timberdale cells platform bits 2011-05-26 19:45:05 +02:00
ide ide-cd: signedness warning fix again 2011-06-11 15:06:48 -07:00
idle
ieee802154
infiniband Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2011-05-26 12:13:57 -07:00
input Input: synaptics_i2c_rmi: Add irqflags to platform data struct to pass them to driver 2011-06-14 09:08:50 -07:00
isdn ISDN, hfcsusb: Don't leak in hfcsusb_ph_info() 2011-06-11 18:59:07 -07:00
leds ledtrig-sleep: Add led trigger for sleep debugging. 2011-06-14 09:08:44 -07:00
lguest
macintosh Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-05-23 09:12:26 -07:00
mca
md dm kcopyd: return client directly and not through a pointer 2011-05-29 13:03:13 +01:00
media Merge branch 'staging-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 2011-06-09 13:09:07 -07:00
memstick
message Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-05-23 09:12:26 -07:00
mfd mfd: Fix build breakage caused by tps65910 gpio directory move 2011-05-28 08:38:55 +02:00
misc misc: uidstat: Adding uid stat driver to collect network statistics. 2011-06-14 09:08:47 -07:00
mmc mmc: sdio: Add high speed support to sdio_reset_comm() 2011-06-14 09:08:53 -07:00
mtd mtd: nand: Allow NAND chip ids to be included standalone. 2011-06-14 09:08:40 -07:00
net net: PPPoPNS and PPPoLAC fixes. 2011-06-14 09:09:14 -07:00
nfc
nubus
of Merge branch 'devicetree/arm-next' of git://git.secretlab.ca/git/linux-2.6 into devel-stable 2011-05-25 00:08:17 +01:00
oprofile oprofile: Fix locking dependency in sync_start() 2011-05-31 16:33:34 +02:00
parisc
parport Merge branch 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6 2011-05-26 13:19:00 -07:00
pci Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 2011-06-09 16:33:01 -07:00
pcmcia
platform Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86 2011-05-29 11:44:33 -07:00
pnp
power power_supply: Hold a wake_lock while power supply change notifications are pending 2011-06-14 09:08:45 -07:00
pps
ps3
ptp ptp: Fix some locking bugs in ptp_read() 2011-06-01 19:29:10 -07:00
rapidio
regulator regulator: Fix _regulator_get_voltage if get_voltage callback is NULL 2011-05-27 10:49:30 +01:00
rtc rtc: alarm: Add in-kernel alarm interface 2011-06-14 09:08:44 -07:00
s390 [S390] qdio: Split SBAL entry flags 2011-06-06 14:14:56 +02:00
sbus
scsi [SCSI] Fix oops caused by queue refcounting failure 2011-06-02 18:34:43 +09:00
sfi
sh Merge branch 'sh/genirq-threading' into sh-latest 2011-05-23 11:36:14 +09:00
sn
spi spi-pl022: Add missing return value update 2011-06-13 09:18:45 -06:00
ssb ssb: fix PCI(e) driver regression causing oops on PCI cards 2011-06-03 14:19:49 -04:00
staging Revert "Staging: android: mark subsystem as broken" 2011-06-14 09:08:38 -07:00
switch switch: switch class and GPIO drivers. 2011-06-14 09:08:45 -07:00
target [SCSI] target: Convert TASK_ATTR to scsi_tcq.h definitions 2011-05-24 13:03:56 -04:00
tc
telephony
thermal
tty tty_buffer: get rid of 'seen_tail' logic in flush_to_ldisc 2011-06-08 07:46:30 -07:00
uio
usb usb: gadget: android: fix compilation on 2.6.37 2011-06-14 09:09:12 -07:00
uwb
vhost vhost: support event index 2011-05-30 11:14:15 +09:30
video video: Fix use-after-free by vga16fb on rmmod 2011-06-06 18:14:45 +09:00
virtio virtio: add api for delayed callbacks 2011-05-30 11:14:16 +09:30
vlynq
w1 w1: add Maxim/Dallas DS2780 Stand-Alone Fuel Gauge IC support 2011-05-26 17:12:38 -07:00
watchdog mfd: Use mfd cell platform_data for rdc321x cells platform bits 2011-05-26 19:45:06 +02:00
xen Merge branch 'stable/xen-swiotlb.bugfix' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/swiotlb-2.6 2011-06-09 12:52:44 -07:00
zorro
Kconfig switch: switch class and GPIO drivers. 2011-06-14 09:08:45 -07:00
Makefile switch: switch class and GPIO drivers. 2011-06-14 09:08:45 -07:00