Revision 1255fcb2a655f05e02f3a74675a6d6525f187afd authored by Ursula Braun on 19 April 2018, 13:56:40 UTC, committed by David S. Miller on 19 April 2018, 20:38:39 UTC
Calling shutdown with SHUT_RD and SHUT_RDWR for a listening SMC socket crashes, because commit 127f49705823 ("net/smc: release clcsock from tcp_listen_worker") releases the internal clcsock in smc_close_active() and sets smc->clcsock to NULL. For SHUT_RD the smc_close_active() call is removed. For SHUT_RDWR the kernel_sock_shutdown() call is omitted, since the clcsock is already released. Fixes: 127f49705823 ("net/smc: release clcsock from tcp_listen_worker") Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com> Reported-by: Stephen Hemminger <stephen@networkplumber.org> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent a60faa6
hecubafb.h
/*
* hecubafb.h - definitions for the hecuba framebuffer driver
*
* Copyright (C) 2008 by Jaya Kumar
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file COPYING in the main directory of this archive for
* more details.
*
*/
#ifndef _LINUX_HECUBAFB_H_
#define _LINUX_HECUBAFB_H_
/* Apollo controller specific defines */
#define APOLLO_START_NEW_IMG 0xA0
#define APOLLO_STOP_IMG_DATA 0xA1
#define APOLLO_DISPLAY_IMG 0xA2
#define APOLLO_ERASE_DISPLAY 0xA3
#define APOLLO_INIT_DISPLAY 0xA4
/* Hecuba interface specific defines */
#define HCB_WUP_BIT 0x01
#define HCB_DS_BIT 0x02
#define HCB_RW_BIT 0x04
#define HCB_CD_BIT 0x08
#define HCB_ACK_BIT 0x80
/* struct used by hecuba. board specific stuff comes from *board */
struct hecubafb_par {
struct fb_info *info;
struct hecuba_board *board;
void (*send_command)(struct hecubafb_par *, unsigned char);
void (*send_data)(struct hecubafb_par *, unsigned char);
};
/* board specific routines
board drivers can implement wait_for_ack with interrupts if desired. if
wait_for_ack is called with clear=0, then go to sleep and return when ack
goes hi or if wait_for_ack with clear=1, then return when ack goes lo */
struct hecuba_board {
struct module *owner;
void (*remove)(struct hecubafb_par *);
void (*set_ctl)(struct hecubafb_par *, unsigned char, unsigned char);
void (*set_data)(struct hecubafb_par *, unsigned char);
void (*wait_for_ack)(struct hecubafb_par *, int);
int (*init)(struct hecubafb_par *);
};
#endif
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...