dahdi-linux/drivers/dahdi
Shaun Ruffell c4356304e5 dahdi: Fix failure to read / write on kernel 3.16+
Kernel version 3.16+, since upstream commit (7f7f25e82d54870d "replace checking
for ->read/->aio_read presence with check in ->f_mode" )[1], does not like it
when dahdi changes the set of allowed file operations on a file descriptor
outside of the context of an open() system call.

DAHDI changes the available file operations when a channel is opened by first
opening /dev/dahdi/channel and then calling the DAHDI_SPECIFY ioctl to bind it
to a particular DAHDI channel. Until DAHDI_SPECIFY is called there weren't any
read()/write() callbacks implemented and therefore after the initial open, the
kernel was setting not setting FMODE_CAN_{WRITE,READ} on the file descriptor
indicating that those operations were not allowed.

Now define empty shell functions on the general dahdi_fops so the vfs layer will
not mark a file descriptor as unwritteable or unreadable on open.

[1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7f7f25e82d54870df24d415a7007fbd327da027b

Internal-Issue-ID: DAHLIN-340
Reported-and-tested-by: Thomas B. Clark
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
(cherry picked from commit b9a8000bbd)
2015-06-04 15:25:00 -05:00
..
datamods net: Update dahdi for alloc_netdev() api change in 3.17+ 2014-08-11 09:53:02 -05:00
firmware wcte43x: Fix failure to download firmware. 2014-07-18 10:19:09 -05:00
hpec Update Digium copyright on files changed since beginning of the year. 2012-03-21 18:56:05 +00:00
oct612x oct612x: Implement the SerializationObject callbacks. 2014-06-20 13:01:27 -05:00
voicebus net: Update dahdi for alloc_netdev() api change in 3.17+ 2014-08-11 09:53:02 -05:00
vpmadt032_loader Add #include <linux/slab.h> to all files that call kzalloc|kmalloc|kfree. 2014-05-20 11:36:23 -05:00
wcb4xxp Do not call dahdi_span_ops.open with spinlock held. 2014-06-20 13:01:27 -05:00
wct4xxp wct4xxp: Report rx signalling bit changes after spanconfig. 2014-06-27 22:40:28 -05:00
wctc4xxp net: Update dahdi for alloc_netdev() api change in 3.17+ 2014-08-11 09:53:02 -05:00
wctdm24xxp Add #include <linux/slab.h> to all files that call kzalloc|kmalloc|kfree. 2014-05-20 11:36:23 -05:00
wcte12xp Add #include <linux/slab.h> to all files that call kzalloc|kmalloc|kfree. 2014-05-20 11:36:23 -05:00
xpp Do not call dahdi_span_ops.open with spinlock held. 2014-06-20 13:01:27 -05:00
adt_lec.c
adt_lec.h
arith.h
biquad.h
dahdi_dummy.c dahdi_dummy: Include timer.h instead of time.h 2012-04-05 16:15:22 +00:00
dahdi_dynamic_eth.c Revert "dahdi_dynamic_eth: Move tx packet flushing to process context." 2012-12-11 10:27:56 -06:00
dahdi_dynamic_ethmf.c dahdi_dynamic_ethmf: Don't use create_proc_read_entry() 2013-05-24 00:30:33 +03:00
dahdi_dynamic_loc.c dahdi_dynamic_loc: Change and check the dyn->pvt pointer under lock. 2012-04-03 19:44:45 +00:00
dahdi_dynamic.c dynamic: Prevent oops due to inverted compile flag 2014-08-15 15:35:51 -05:00
dahdi_echocan_jpah.c Update Digium copyright on files changed since beginning of the year. 2012-03-21 18:56:05 +00:00
dahdi_echocan_kb1.c Update Digium copyright on files changed since beginning of the year. 2012-03-21 18:56:05 +00:00
dahdi_echocan_mg2.c Update Digium copyright on files changed since beginning of the year. 2012-03-21 18:56:05 +00:00
dahdi_echocan_oslec.c
dahdi_echocan_sec2.c
dahdi_echocan_sec.c
dahdi_transcode.c wctc4xxp: Cleanup RTP for unopened channels. 2014-05-16 12:06:58 -05:00
dahdi-base.c dahdi: Fix failure to read / write on kernel 3.16+ 2015-06-04 15:25:00 -05:00
dahdi-sysfs-chan.c sysfs: bugfix: shorten too long file names 2013-06-23 22:12:33 +03:00
dahdi-sysfs.c sysfs: new device attribute: registration_time 2014-01-28 20:04:22 +02:00
dahdi-sysfs.h
dahdi-version.c
dahdi.h Update Digium copyright on files changed since beginning of the year. 2012-03-21 18:56:05 +00:00
ecdis.h
fir.h
fxo_modes.h
Kbuild wcte43x: Add driver for TE435/TE235 digital cards. 2013-11-11 14:39:19 -06:00
Kconfig
makefw.c
pciradio.c pciradio: interruptible_sleep_on_timeout() -> msleep_interruptible() 2014-05-20 11:36:23 -05:00
pciradio.rbt
proslic.h
tor2-hw.h
tor2.c tor2: Remove unused open/close callbacks. 2014-06-20 13:01:27 -05:00
tormenta2.rbt
wcaxx-base.c wcaxx: Update firmware for A8B/A4B to 1d0019/b0019. 2014-03-17 12:02:47 -05:00
wcfxo.c Do not call dahdi_span_ops.open with spinlock held. 2014-06-20 13:01:27 -05:00
wct1xxp.c Add #include <linux/slab.h> to all files that call kzalloc|kmalloc|kfree. 2014-05-20 11:36:23 -05:00
wctdm.c Do not call dahdi_span_ops.open with spinlock held. 2014-06-20 13:01:27 -05:00
wcte11xp.c Do not call dahdi_span_ops.open with spinlock held. 2014-06-20 13:01:27 -05:00
wcte13xp-base.c wcte13xp: Reset span alarm to RED on startup 2014-07-23 16:24:01 -05:00
wcte43x-base.c wcte43x: Reset span alarm to RED on startup 2014-08-01 16:16:08 -05:00
wcxb_flash.c wcaxx: New driver for A4A/A4B/A8A/A8B analog cards. 2013-11-11 14:39:19 -06:00
wcxb_flash.h wcaxx: New driver for A4A/A4B/A8A/A8B analog cards. 2013-11-11 14:39:19 -06:00
wcxb_spi.c Add #include <linux/slab.h> to all files that call kzalloc|kmalloc|kfree. 2014-05-20 11:36:23 -05:00
wcxb_spi.h wcaxx: New driver for A4A/A4B/A8A/A8B analog cards. 2013-11-11 14:39:19 -06:00
wcxb.c Add #include <linux/slab.h> to all files that call kzalloc|kmalloc|kfree. 2014-05-20 11:36:23 -05:00
wcxb.h wcxb: Add diagnostic message if DMA retries are increasing when DEBUG is defined. 2014-03-17 10:33:14 -05:00