From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757883AbcLTDOi (ORCPT ); Mon, 19 Dec 2016 22:14:38 -0500 Received: from mga09.intel.com ([134.134.136.24]:28582 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751583AbcLTDOe (ORCPT ); Mon, 19 Dec 2016 22:14:34 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,376,1477983600"; d="gz'50?scan'50,208,50";a="20526671" Date: Tue, 20 Dec 2016 11:21:49 +0800 From: kbuild test robot To: Scott Bauer Cc: kbuild-all@01.org, linux-nvme@lists.infradead.org, Rafael.Antognolli@intel.com, axboe@fb.com, keith.busch@intel.com, jonathan.derrick@intel.com, viro@zeniv.linux.org.uk, hch@infradead.org, linux-kernel@vger.kernel.org, sagi@grimberg.me, Scott Bauer Subject: Re: [PATCH v3 2/5] lib: Add Sed-opal library Message-ID: <201612201151.7jQHOkJQ%fengguang.wu@intel.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="cWoXeonUoKmBZSoM" Content-Disposition: inline In-Reply-To: <1482176149-2257-3-git-send-email-scott.bauer@intel.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: fengguang.wu@intel.com X-SA-Exim-Scanned: No (on bee); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --cWoXeonUoKmBZSoM Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Scott, [auto build test ERROR on linus/master] [also build test ERROR on v4.9 next-20161219] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Scott-Bauer/include-Add-definitions-for-sed/20161220-110214 config: i386-tinyconfig (attached as .config) compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce: # save the attached .config to linux build tree make ARCH=i386 All error/warnings (new ones prefixed by >>): In file included from lib/sed.c:20:0: >> include/linux/sed-opal.h:37:40: warning: 'struct request_queue' declared inside parameter list will not be visible outside of this definition or declaration struct opal_dev *alloc_opal_dev(struct request_queue *q); ^~~~~~~~~~~~~ lib/sed.c: In function 'fdev_sed_ioctl': >> lib/sed.c:161:12: error: dereferencing pointer to incomplete type 'struct file' if (!filep->f_sedctx || !filep->f_sedctx->ops || !filep->f_sedctx->dev) ^~ -- In file included from lib/sed-opal.c:29:0: >> include/linux/sed-opal.h:37:40: warning: 'struct request_queue' declared inside parameter list will not be visible outside of this definition or declaration struct opal_dev *alloc_opal_dev(struct request_queue *q); ^~~~~~~~~~~~~ lib/sed-opal.c: In function 'opal_discovery0_end': lib/sed-opal.c:276:6: warning: unused variable 'error' [-Wunused-variable] int error = 0; ^~~~~ lib/sed-opal.c: In function 'response_parse': >> lib/sed-opal.c:793:15: error: invalid storage class for function 'response_get_string' static size_t response_get_string(const struct parsed_resp *resp, int n, ^~~~~~~~~~~~~~~~~~~ >> lib/sed-opal.c:793:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static size_t response_get_string(const struct parsed_resp *resp, int n, ^~~~~~ >> lib/sed-opal.c:817:12: error: invalid storage class for function 'response_get_u64' static u64 response_get_u64(const struct parsed_resp *resp, int n) ^~~~~~~~~~~~~~~~ >> lib/sed-opal.c:846:11: error: invalid storage class for function 'response_status' static u8 response_status(const struct parsed_resp *resp) ^~~~~~~~~~~~~~~ >> lib/sed-opal.c:866:12: error: invalid storage class for function 'parse_and_check_status' static int parse_and_check_status(struct opal_dev *dev) ^~~~~~~~~~~~~~~~~~~~~~ >> lib/sed-opal.c:883:13: error: invalid storage class for function 'clear_opal_cmd' static void clear_opal_cmd(struct opal_cmd *cmd) ^~~~~~~~~~~~~~ >> lib/sed-opal.c:891:12: error: invalid storage class for function 'start_opal_session_cont' static int start_opal_session_cont(struct opal_dev *dev) ^~~~~~~~~~~~~~~~~~~~~~~ >> lib/sed-opal.c:913:20: error: invalid storage class for function 'opal_dev_get' static inline void opal_dev_get(struct opal_dev *dev) ^~~~~~~~~~~~ >> lib/sed-opal.c:918:20: error: invalid storage class for function 'opal_dev_put' static inline void opal_dev_put(struct opal_dev *dev) ^~~~~~~~~~~~ >> lib/sed-opal.c:923:12: error: invalid storage class for function 'add_suspend_info' static int add_suspend_info(struct opal_dev *dev, struct opal_suspend_data *sus) ^~~~~~~~~~~~~~~~ >> lib/sed-opal.c:949:12: error: invalid storage class for function 'end_session_cont' static int end_session_cont(struct opal_dev *dev) ^~~~~~~~~~~~~~~~ >> lib/sed-opal.c:956:12: error: invalid storage class for function 'finalize_and_send' static int finalize_and_send(struct opal_dev *dev, struct opal_cmd *cmd, ^~~~~~~~~~~~~~~~~ >> lib/sed-opal.c:972:12: error: invalid storage class for function 'gen_key' static int gen_key(struct opal_dev *dev) ^~~~~~~ >> lib/sed-opal.c:1002:12: error: invalid storage class for function 'get_active_key_cont' static int get_active_key_cont(struct opal_dev *dev) ^~~~~~~~~~~~~~~~~~~ >> lib/sed-opal.c:1027:12: error: invalid storage class for function 'get_active_key' static int get_active_key(struct opal_dev *dev) ^~~~~~~~~~~~~~ >> lib/sed-opal.c:1067:12: error: invalid storage class for function 'generic_lr_enable_disable' static int generic_lr_enable_disable(struct opal_cmd *cmd, ^~~~~~~~~~~~~~~~~~~~~~~~~ >> lib/sed-opal.c:1107:19: error: invalid storage class for function 'enable_global_lr' static inline int enable_global_lr(struct opal_cmd *cmd, u8 *uid, ^~~~~~~~~~~~~~~~ >> lib/sed-opal.c:1118:12: error: invalid storage class for function 'setup_locking_range' static int setup_locking_range(struct opal_dev *dev) ^~~~~~~~~~~~~~~~~~~ >> lib/sed-opal.c:1183:12: error: invalid storage class for function 'start_generic_opal_session' static int start_generic_opal_session(struct opal_dev *dev, ^~~~~~~~~~~~~~~~~~~~~~~~~~ vim +161 lib/sed.c 14 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15 * more details. 16 */ 17 18 #include 19 #include > 20 #include 21 #include 22 23 int sed_save(struct sed_context *sed_ctx, struct sed_key *key) 24 { 25 switch (key->sed_type) { 26 case OPAL_LOCK_UNLOCK: 27 return opal_save(sed_ctx, key); 28 } 29 30 return -EOPNOTSUPP; 31 } 32 33 int sed_lock_unlock(struct sed_context *sed_ctx, struct sed_key *key) 34 { 35 switch (key->sed_type) { 36 case OPAL_LOCK_UNLOCK: 37 return opal_lock_unlock(sed_ctx, key); 38 } 39 40 return -EOPNOTSUPP; 41 } 42 43 int sed_take_ownership(struct sed_context *sed_ctx, struct sed_key *key) 44 { 45 46 switch (key->sed_type) { 47 case OPAL: 48 return opal_take_ownership(sed_ctx, key); 49 } 50 51 return -EOPNOTSUPP; 52 } 53 54 int sed_activate_lsp(struct sed_context *sed_ctx, struct sed_key *key) 55 { 56 57 switch (key->sed_type) { 58 case OPAL: 59 return opal_activate_lsp(sed_ctx, key); 60 } 61 62 return -EOPNOTSUPP; 63 } 64 65 int sed_set_pw(struct sed_context *sed_ctx, struct sed_key *key) 66 { 67 68 switch (key->sed_type) { 69 case OPAL_PW: 70 return opal_set_new_pw(sed_ctx, key); 71 } 72 73 return -EOPNOTSUPP; 74 } 75 76 int sed_activate_user(struct sed_context *sed_ctx, struct sed_key *key) 77 { 78 79 switch (key->sed_type) { 80 case OPAL_ACT_USR: 81 return opal_activate_user(sed_ctx, key); 82 } 83 84 return -EOPNOTSUPP; 85 } 86 87 int sed_reverttper(struct sed_context *sed_ctx, struct sed_key *key) 88 { 89 90 switch (key->sed_type) { 91 case OPAL: 92 return opal_reverttper(sed_ctx, key); 93 } 94 95 return -EOPNOTSUPP; 96 } 97 98 int sed_setup_locking_range(struct sed_context *sed_ctx, struct sed_key *key) 99 { 100 101 switch (key->sed_type) { 102 case OPAL_LR_SETUP: 103 return opal_setup_locking_range(sed_ctx, key); 104 } 105 106 return -EOPNOTSUPP; 107 } 108 109 int sed_adduser_to_lr(struct sed_context *sed_ctx, struct sed_key *key) 110 { 111 112 switch (key->sed_type) { 113 case OPAL_LOCK_UNLOCK: 114 return opal_add_user_to_lr(sed_ctx, key); 115 } 116 117 return -EOPNOTSUPP; 118 } 119 120 int sed_do_mbr(struct sed_context *sed_ctx, struct sed_key *key) 121 { 122 123 switch (key->sed_type) { 124 case OPAL_MBR_DATA: 125 return opal_enable_disable_shadow_mbr(sed_ctx, key); 126 } 127 128 return -EOPNOTSUPP; 129 } 130 131 int sed_erase_lr(struct sed_context *sed_ctx, struct sed_key *key) 132 { 133 134 switch (key->sed_type) { 135 case OPAL: 136 return opal_erase_locking_range(sed_ctx, key); 137 } 138 139 return -EOPNOTSUPP; 140 } 141 142 int sed_secure_erase_lr(struct sed_context *sed_ctx, struct sed_key *key) 143 { 144 switch (key->sed_type) { 145 case OPAL_ACT_USR: 146 return opal_secure_erase_locking_range(sed_ctx, key); 147 148 } 149 return -EOPNOTSUPP; 150 } 151 152 int fdev_sed_ioctl(struct file *filep, unsigned int cmd, 153 unsigned long arg) 154 { 155 struct sed_key key; 156 struct sed_context *sed_ctx; 157 158 if (!capable(CAP_SYS_ADMIN)) 159 return -EACCES; 160 > 161 if (!filep->f_sedctx || !filep->f_sedctx->ops || !filep->f_sedctx->dev) 162 return -ENODEV; 163 164 sed_ctx = filep->f_sedctx; --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation --cWoXeonUoKmBZSoM Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 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 JAD/A8iVhOiWWgAA --cWoXeonUoKmBZSoM--