From patchwork Thu Aug 16 19:24:24 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Hefty, Sean" X-Patchwork-Id: 1334891 Return-Path: X-Original-To: patchwork-linux-rdma@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 5BCAD40211 for ; Thu, 16 Aug 2012 19:24:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753326Ab2HPTY3 (ORCPT ); Thu, 16 Aug 2012 15:24:29 -0400 Received: from mga09.intel.com ([134.134.136.24]:28674 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753460Ab2HPTYZ convert rfc822-to-8bit (ORCPT ); Thu, 16 Aug 2012 15:24:25 -0400 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP; 16 Aug 2012 12:24:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.77,780,1336374000"; d="scan'208";a="187368129" Received: from orsmsx604.amr.corp.intel.com ([10.22.226.87]) by orsmga002.jf.intel.com with ESMTP; 16 Aug 2012 12:24:25 -0700 Received: from orsmsx103.amr.corp.intel.com (10.22.225.130) by orsmsx604.amr.corp.intel.com (10.22.226.87) with Microsoft SMTP Server (TLS) id 8.2.255.0; Thu, 16 Aug 2012 12:24:25 -0700 Received: from orsmsx101.amr.corp.intel.com ([169.254.8.152]) by ORSMSX103.amr.corp.intel.com ([169.254.2.138]) with mapi id 14.01.0355.002; Thu, 16 Aug 2012 12:24:25 -0700 From: "Hefty, Sean" To: "linux-rdma (linux-rdma@vger.kernel.org)" Subject: [PATCH 7/7] librdmacm/rspreload: Add fstat support Thread-Topic: [PATCH 7/7] librdmacm/rspreload: Add fstat support Thread-Index: Ac175LV7j84W3AeQQruwsUi6Z8OISQ== Date: Thu, 16 Aug 2012 19:24:24 +0000 Message-ID: <1828884A29C6694DAF28B7E6B8A8237346A89989@ORSMSX101.amr.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.22.254.139] MIME-Version: 1.0 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org vsftpd calls fstat on a socket. Fake it out. Signed-off-by: Sean Hefty --- src/preload.c | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/src/preload.c b/src/preload.c index c6cf176..8f19af5 100644 --- a/src/preload.c +++ b/src/preload.c @@ -87,6 +87,7 @@ struct socket_calls { int (*fcntl)(int socket, int cmd, ... /* arg */); int (*dup2)(int oldfd, int newfd); ssize_t (*sendfile)(int out_fd, int in_fd, off_t *offset, size_t count); + int (*fxstat)(int ver, int fd, struct stat *buf); }; static struct socket_calls real; @@ -280,6 +281,7 @@ static void init_preload(void) real.fcntl = dlsym(RTLD_NEXT, "fcntl"); real.dup2 = dlsym(RTLD_NEXT, "dup2"); real.sendfile = dlsym(RTLD_NEXT, "sendfile"); + real.fxstat = dlsym(RTLD_NEXT, "__fxstat"); rs.socket = dlsym(RTLD_DEFAULT, "rsocket"); rs.bind = dlsym(RTLD_DEFAULT, "rbind"); @@ -1033,3 +1035,18 @@ ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count) munmap(file_addr, count); return ret; } + +int __fxstat(int ver, int socket, struct stat *buf) +{ + int fd, ret; + + init_preload(); + if (fd_get(socket, &fd) == fd_rsocket) { + ret = real.fxstat(ver, socket, buf); + if (!ret) + buf->st_mode = (buf->st_mode & ~S_IFMT) | __S_IFSOCK; + } else { + ret = real.fxstat(ver, fd, buf); + } + return ret; +}