linux/drivers/target
Al Viro f1377fddb3 iscsi-target: Drop bogus struct file usage for iSCSI/SCTP
commit bf6932f44a upstream.

From Al Viro:

	BTW, speaking of struct file treatment related to sockets -
        there's this piece of code in iscsi:
        /*
         * The SCTP stack needs struct socket->file.
         */
        if ((np->np_network_transport == ISCSI_SCTP_TCP) ||
            (np->np_network_transport == ISCSI_SCTP_UDP)) {
                if (!new_sock->file) {
                        new_sock->file = kzalloc(
                                        sizeof(struct file), GFP_KERNEL);

For one thing, as far as I can see it'not true - sctp does *not* depend on
socket->file being non-NULL; it does, in one place, check socket->file->f_flags
for O_NONBLOCK, but there it treats NULL socket->file as "flag not set".
Which is the case here anyway - the fake struct file created in
__iscsi_target_login_thread() (and in iscsi_target_setup_login_socket(), with
the same excuse) do *not* get that flag set.

Moreover, it's a bloody serious violation of a bunch of asserts in VFS;
all struct file instances should come from filp_cachep, via get_empty_filp()
(or alloc_file(), which is a wrapper for it).  FWIW, I'm very tempted to
do this and be done with the entire mess:

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Cc: Andy Grover <agrover@redhat.com>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-08-09 08:31:26 -07:00
..
iscsi iscsi-target: Drop bogus struct file usage for iSCSI/SCTP 2012-08-09 08:31:26 -07:00
loopback loopback: Fix transport_generic_allocate_tasks error handling 2012-03-17 18:07:27 -07:00
tcm_fc tcm_fc: Fix crash seen with aborts and large reads 2012-07-29 08:04:18 -07:00
Kconfig iscsi-target: Add iSCSI fabric support for target v4.1 2011-07-26 09:16:43 +00:00
Makefile target: remove the ->transport_split_cdb callback in se_cmd 2011-10-24 03:21:15 +00:00
target_core_alua.c target: Return error to initiator if SET TARGET PORT GROUPS emulation fails 2012-06-22 11:37:17 -07:00
target_core_alua.h target: pass the se_task to the CDB emulation callback 2011-11-04 08:00:17 +00:00
target_core_cdb.c target: Fix range calculation in WRITE SAME emulation when num blocks == 0 2012-07-29 08:04:18 -07:00
target_core_configfs.c target: remove obvious warnings 2012-03-15 19:16:09 -07:00
target_core_device.c target: remove obvious warnings 2012-03-15 19:16:09 -07:00
target_core_fabric_configfs.c target: Use array_zalloc for device_list 2012-03-15 19:15:51 -07:00
target_core_fabric_lib.c target: remove useless casts 2011-12-14 11:28:07 +00:00
target_core_file.c target: Fix bug in handling of FILEIO + block_device resize ops 2012-05-17 12:02:43 -07:00
target_core_file.h target: make the ->get_cdb method optional 2011-10-24 03:21:11 +00:00
target_core_hba.c target: header reshuffle, part2 2011-12-14 11:26:05 +00:00
target_core_iblock.c target: increase iblock task sizes 2012-02-25 14:37:46 -08:00
target_core_iblock.h target: increase iblock task sizes 2012-02-25 14:37:46 -08:00
target_core_internal.h target: Untangle front-end and back-end meanings of max_sectors attribute 2012-02-25 14:37:49 -08:00
target_core_pr.c target: Clean up returning errors in PR handling code 2012-07-29 08:04:18 -07:00
target_core_pr.h target: Move core_scsi3_check_cdb_abort_and_preempt 2011-12-14 11:27:34 +00:00
target_core_pscsi.c target/pscsi: fix PHV_VIRUTAL_HOST_ID typo 2012-02-25 14:37:50 -08:00
target_core_pscsi.h target/pscsi: fix PHV_VIRUTAL_HOST_ID typo 2012-02-25 14:37:50 -08:00
target_core_rd.c target: use \n as a separator for configuration 2011-12-14 11:27:23 +00:00
target_core_rd.h target: make the ->get_cdb method optional 2011-10-24 03:21:11 +00:00
target_core_stat.c target: remove obvious warnings 2012-03-15 19:16:09 -07:00
target_core_tmr.c target: Add TMR_ABORT_TASK task management support 2012-02-25 14:37:49 -08:00
target_core_tpg.c target: Drop incorrect se_lun_acl release for dynamic -> explict ACL conversion 2012-05-11 14:55:19 -07:00
target_core_transport.c target: Add generation of LOGICAL BLOCK ADDRESS OUT OF RANGE 2012-08-09 08:31:26 -07:00
target_core_ua.c target: Use array_zalloc for device_list 2012-03-15 19:15:51 -07:00
target_core_ua.h